On Wed, 2 May 2001, Remy Maucherat wrote:

> > 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.
> 
> Ok, you have a case ;)
> I don't like the alternate constructors either. Originally, there was only
> the default constructor, which was simpler IMO.
> I would deprecate instead of removing right away.
> 
> > Also, the javadocs should note that using startSession(URL) only populates
> > the hostname and port, not the path of any subsequent HttpMethods.
> 
> Good idea.
> 
> Remy

Great!  If there are no objections, I'll deprecate those methods and
update the JavaDocs today.

- Morgan

Reply via email to