Hi all,

I'm thinking about reworking the way the constructors and startSession
methods work in the HttpClient class.  I think it's a little confusing
right now.  Currently HttpClient has three constructors:

  HttpClient()
  HttpClient(URL url)
  HttpClient(URL url, String user, String password)

and three startSession methods:

  startSession()
  startSession(URL url)
  startSession(String hostname, String port)

I think that this will introduct too much confusion.  For example, what
happens when I do the following?

  HttpClient client =  new HttpClient(new URL("http://java.sun.com";));
  client.startSession();

You may think that you've opened a session on "java.sun.com:80", but what
you've actually done is opened a session for "localhost:80".  Even if we
noted this in the javadocs, I still think programmers would screw it
up.  Also worthy of note is that the above code instantiates the State
object twice before it is even used.  :(

I think a more clear API would be only two constructors and only two start
session methods:

  HttpClient()
  HttpClient(String user, String password)
  startSession(URL url)
  startSession(String hostname, String port)

This will have the added advantage of not having to instantiate the State
objects multiple times for a single request.

Also, the javadocs should note that using startSession(URL) only populates
the hostname and port, not the path of any subsequent HttpMethods.

- Morgan



Reply via email to