Thanks Oleg for the explanations, but what you are saying seems to
contradict the current code structure.

> I assume you'd still want this method to be executed against
> http://www.anothercompnany.com/ not http://www.mycompnany.com/, right?

Actually no! I would expect it to be run against mycompany.com and not
anothercompany.com, as I am explicitly passing a host configuration. This is
the case with the current code anyways, as can be tested by running a simple
example (see the code example of running against Google and Yahoo later)

> So, if you want to know the exact host parameters applied during the
> method execution, you should call
>
> ===================================================================
>
> method.getHostConfguration().getParams().getParameter("http.useragent"));
> ===================================================================

As I said earlier, this is not right. I tried it, but as expected, it still
doesn't work. Please see the code below:

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.HostConfiguration;

public class HttpClientParameterV1 {

 public static void main(String args[]) throws Exception {

  HttpClient client = new HttpClient();
  client.getParams().setParameter("http.useragent", "My Browser");

  HostConfiguration host = client.getHostConfiguration();
  host.setHost("www.google.com");

  GetMethod method = new GetMethod("http://www.yahoo.com";);

  int returnCode = client.executeMethod(host, method); // connects to Google
and not Yahoo

  System.err.println(method.getResponseBodyAsString());

  System.err.println("User-Agent: " +

method.getHostConfiguration().getParams().getParameter("http.useragent"));
// Still prints default useragent info

  System.err.println("User-Agent: " +
    method.getParams().getParameter("http.useragent"));

  method.releaseConnection();
 }
}

Vikram



----- Original Message ----- 
From: "Oleg Kalnichevski" <[EMAIL PROTECTED]>
To: "Commons HttpClient Project" <[EMAIL PROTECTED]>
Sent: Wednesday, September 29, 2004 10:29 PM
Subject: Re: Problem with Preferences Architecture


>
> Vikram,
>
> I hope what is to follow will clarify things a little
>
> (1)
> ===================================================================
> HostConfiguration host = new HostConfiguration();
> host.setHost("www.google.com");
> ===================================================================
>
> These are the defaults that apply only when some host parameters have
> not been explicitly defined by the method itself. Thus, they are not
> supposed to mutate as a result of method execution
>
> Consider the following:
> ===================================================================
> HttpClient client = new HttpClient();
>
> HostConfiguration hostconfig = new HostConfiguration();
> hostconfig.setHost("www.mycompnany.com");
>
> HttpMethod httpget = new GetMethod("http://www.anothercompnany.com/";);
>
> client.executeMethod(hostconfig, httpget);
> ===================================================================
>
> I assume you'd still want this method to be executed against
> http://www.anothercompnany.com/ not http://www.mycompnany.com/, right?
>
> So, if you want to know the exact host parameters applied during the
> method execution, you should call
>
> ===================================================================
>
> method.getHostConfguration().getParams().getParameter("http.useragent"));
> ===================================================================
>
> Please let me know if that sounds reasonable/unreasonable
>
> (2)
> All this said, I have to admit that current host configuration related
> code is a horrible mess. I will provide a refactoring patch shortly
>
> Hope this helps
>
> Oleg
>
>
> On Wed, 2004-09-29 at 11:14, Vikram Goyal wrote:
> > Hello,
> >
> > I am not sure if this is a bug or I am not running this right.
> >
> > I am trying to get the preferences architecture to modify the
http.useragent
> > property at the client level, and then retrieve the value at the method
and
> > host level. The value gets percolated down to the Method level but the
Host
> > level value does not change and gives the global value. See code below.
> >
> > As per the 3.0 B2 documentation, the Method and Host params should try
and
> > retrieve the value of the http.useragent from their local cache, and if
it
> > they do not find it, should go up the heirarchy, till they reach the
global
> > params. Since in the code below, the value is set at the Client level,
one
> > lower than the Global level, it should be retrieved from the Client
level
> > for both Method and Host params.
> >
> > Regards,
> > Vikram
> >
> > import org.apache.commons.httpclient.HttpClient;
> > import org.apache.commons.httpclient.methods.GetMethod;
> > import org.apache.commons.httpclient.HostConfiguration;
> >
> > public class HttpClientTest {
> >
> >  public static void main(String args[]) throws Exception {
> >
> >   HttpClient client = new HttpClient();
> >   client.getParams().setParameter("http.useragent", "My Browser");  //
set
> > the value here
> >
> >   HostConfiguration host = new HostConfiguration();
> >   host.setHost("www.google.com");
> >
> >   GetMethod method = new GetMethod("/");
> >
> >   int returnCode = client.executeMethod(host, method);
> >
> >   System.err.println("User-Agent: " +
> >     host.getParams().getParameter("http.useragent"));  // does not print
My
> > Browser
> >
> >   System.err.println("User-Agent: " +
> >     method.getParams().getParameter("http.useragent")); // prints My
Browser
> >
> >   method.releaseConnection();
> >  }
> > }
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail:
[EMAIL PROTECTED]
> > For additional commands, e-mail:
[EMAIL PROTECTED]
>
>
****************************************************************************
***********************
> The information in this email is confidential and may be legally
privileged.  Access to this email by anyone other than the intended
addressee is unauthorized.  If you are not the intended recipient of this
message, any review, disclosure, copying, distribution, retention, or any
action taken or omitted to be taken in reliance on it is prohibited and may
be unlawful.  If you are not the intended recipient, please reply to or
forward a copy of this message to the sender and delete the message, any
attachments, and any copies thereof from your system.
>
****************************************************************************
***********************
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
[EMAIL PROTECTED]
> For additional commands, e-mail:
[EMAIL PROTECTED]
>
>
>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to