You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by gr...@standardlife.com on 2006/03/29 10:41:49 UTC

Problem with HttpClient & HostConfiguration




I had a method which opens up http connections to URLs outside our
firewall, and in order to hide the implementation details of our network, I
make the connection via a proxy server. I've previously used the
java.net.HttpURLConnection class, and specified a proxy by setting the http
proxy settings (http.proxyHost/http.proxyPort/http.proxySet) as system
properties. The code to open the connection itself was fairly
straightforward ('url' in the snippet below is a java.net.URL object);

--------------------------------------------------------------------------------

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

--------------------------------------------------------------------------------

However...another application has deployed into the same JVM that my
application lives in, and due to co-existence issues (insert long story
here) I can no longer set these properties in the JVM. To try to just set
the proxy on a connection-by-connection basis, I've changed my application
code to try to use the HttpClient class to create the connection, and a
HostConfiguration object to set the proxy details;

--------------------------------------------------------------------------------

      HttpClient client = new HttpClient();
      PostMethod postMethod = new PostMethod(url.toString());

      // ---- set various headers ----
      RequestEntity re = new StringRequestEntity(data);
      postMethod.setRequestEntity(re);
      HostConfiguration hostConfig = new HostConfiguration();

      // the 'proxy' object holds the server name and port
      hostConfig.setProxy(proxy.getProxyServer(), proxy.getProxyPort());
      client.setHostConfiguration(hostConfig);

      // do the send
      int status = client.executeMethod(postMethod);

--------------------------------------------------------------------------------

The proxy server/port are identical to the one I used before (when using
HttpURLConnection, but I now get the following error from my server code
when I tried to do the send;


--------------------------------------------------------------------------------

org.apache.commons.httpclient.HttpMethodDirector  I/O exception
(java.net.SocketException) caught when processing request:
Operation timed out: connect:could be due to invalid address
org.apache.commons.httpclient.HttpMethodDirector Retrying request

--------------------------------------------------------------------------------


Any help much appreciated......

This e-mail is confidential, if you are not the intended recipient, do not
retain/disclose it and please return it to us. We virus scan and monitor
all e-mails but are not responsible for any damage caused by a
virus/alteration of our e-mail by a third party after sending.

For more information on Standard Life, visit our website
http://www.standardlife.co.uk/

The Standard Life Assurance Company, Standard Life House, 30 Lothian Road,
Edinburgh EH1 2DH, is registered in Scotland (No. SZ4) and is authorised
and regulated by the Financial Services Authority. Tel: 0131 225 2552 -
calls may be recorded or monitored.


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpclient-dev-help@jakarta.apache.org


Re: Problem with HttpClient & HostConfiguration

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Wed, 2006-03-29 at 11:55 +0100, greg_watson@standardlife.com wrote:
> 
> 
> 
> Thanks for the attached Oleg - I've made these changes to the application,
> but I'm still experiencing the same error;
> 
> I/O exception (java.net.SocketException) caught when processing request:
> Operation timed out: connect:could be due to invalid address
> 2ab52ab5 HttpMethodDir I org.apache.commons.httpclient.HttpMethodDirector
> Retrying request
> 
> I've checked that the proxy server itself is OK by creating the connection
> using Java.net.HttpURLConnection, and all appears to be OK. Do you have any
> other suggestions as to where I may have gone wrong?
> 
> Thanks, Greg
> 

Post a wire/context log of the HTTP session and relevant code snippets

http://jakarta.apache.org/commons/httpclient/logging.html

Oleg

> 
> Oleg Kalnichevski <ol...@apache.org> wrote on 29/03/2006 10:49:04:
> 
> > On Wed, 2006-03-29 at 09:41 +0100, greg_watson@standardlife.com wrote:
> > >
> > >
> > >
> > > I had a method which opens up http connections to URLs outside our
> > > firewall, and in order to hide the implementation details of our
> network, I
> > > make the connection via a proxy server. I've previously used the
> > > java.net.HttpURLConnection class, and specified a proxy by setting the
> http
> > > proxy settings (http.proxyHost/http.proxyPort/http.proxySet) as system
> > > properties. The code to open the connection itself was fairly
> > > straightforward ('url' in the snippet below is a java.net.URL object);
> > >
> > >
> >
> --------------------------------------------------------------------------------
> 
> > >
> > > HttpURLConnection conn = (HttpURLConnection) url.openConnection();
> > >
> > >
> >
> --------------------------------------------------------------------------------
> 
> > >
> > > However...another application has deployed into the same JVM that my
> > > application lives in, and due to co-existence issues (insert long story
> > > here) I can no longer set these properties in the JVM. To try to just
> set
> > > the proxy on a connection-by-connection basis, I've changed my
> application
> > > code to try to use the HttpClient class to create the connection, and a
> > > HostConfiguration object to set the proxy details;
> > >
> > >
> >
> --------------------------------------------------------------------------------
> 
> > >
> > >       HttpClient client = new HttpClient();
> > >       PostMethod postMethod = new PostMethod(url.toString());
> > >
> > >       // ---- set various headers ----
> > >       RequestEntity re = new StringRequestEntity(data);
> > >       postMethod.setRequestEntity(re);
> > >       HostConfiguration hostConfig = new HostConfiguration();
> > >
> > >       // the 'proxy' object holds the server name and port
> > >       hostConfig.setProxy(proxy.getProxyServer(),
> proxy.getProxyPort());
> > >
> >
> >
> >
> > > client.setHostConfiguration(hostConfig);
> >
> > Do not do this. Pass the host configuration as a parameter to the
> > HttpClient#executeMethod
> >
> > >
> > >       // do the send
> > >       int status = client.executeMethod(postMethod);
> > >
> >
> > int status = client.executeMethod(hostConfig, postMethod);
> >
> > Hope this helps
> >
> > Oleg
> >
> > >
> >
> --------------------------------------------------------------------------------
> 
> > >
> > > The proxy server/port are identical to the one I used before (when
> using
> > > HttpURLConnection, but I now get the following error from my server
> code
> > > when I tried to do the send;
> > >
> > >
> > >
> >
> --------------------------------------------------------------------------------
> 
> > >
> > > org.apache.commons.httpclient.HttpMethodDirector  I/O exception
> > > (java.net.SocketException) caught when processing request:
> > > Operation timed out: connect:could be due to invalid address
> > > org.apache.commons.httpclient.HttpMethodDirector Retrying request
> > >
> > >
> >
> --------------------------------------------------------------------------------
> 
> > >
> > >
> > > Any help much appreciated......
> > >
> > > This e-mail is confidential, if you are not the intended recipient, do
> not
> > > retain/disclose it and please return it to us. We virus scan and
> monitor
> > > all e-mails but are not responsible for any damage caused by a
> > > virus/alteration of our e-mail by a third party after sending.
> > >
> > > For more information on Standard Life, visit our website
> > > http://www.standardlife.co.uk/
> > >
> > > The Standard Life Assurance Company, Standard Life House, 30 Lothian
> Road,
> > > Edinburgh EH1 2DH, is registered in Scotland (No. SZ4) and is
> authorised
> > > and regulated by the Financial Services Authority. Tel: 0131 225 2552 -
> > > calls may be recorded or monitored.
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: httpclient-dev-unsubscribe@jakarta.apache.org
> > > For additional commands, e-mail: httpclient-dev-help@jakarta.apache.org
> > >
> > >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: httpclient-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: httpclient-dev-help@jakarta.apache.org
> >
> 
> 
> This e-mail is confidential, if you are not the intended recipient, do not
> retain/disclose it and please return it to us. We virus scan and monitor
> all e-mails but are not responsible for any damage caused by a
> virus/alteration of our e-mail by a third party after sending.
> 
> For more information on Standard Life, visit our website
> http://www.standardlife.co.uk/
> 
> The Standard Life Assurance Company, Standard Life House, 30 Lothian Road,
> Edinburgh EH1 2DH, is registered in Scotland (No. SZ4) and is authorised
> and regulated by the Financial Services Authority. Tel: 0131 225 2552 -
> calls may be recorded or monitored.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: httpclient-dev-help@jakarta.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpclient-dev-help@jakarta.apache.org


Re: Problem with HttpClient & HostConfiguration

Posted by gr...@standardlife.com.



Thanks for the attached Oleg - I've made these changes to the application,
but I'm still experiencing the same error;

I/O exception (java.net.SocketException) caught when processing request:
Operation timed out: connect:could be due to invalid address
2ab52ab5 HttpMethodDir I org.apache.commons.httpclient.HttpMethodDirector
Retrying request

I've checked that the proxy server itself is OK by creating the connection
using Java.net.HttpURLConnection, and all appears to be OK. Do you have any
other suggestions as to where I may have gone wrong?

Thanks, Greg


Oleg Kalnichevski <ol...@apache.org> wrote on 29/03/2006 10:49:04:

> On Wed, 2006-03-29 at 09:41 +0100, greg_watson@standardlife.com wrote:
> >
> >
> >
> > I had a method which opens up http connections to URLs outside our
> > firewall, and in order to hide the implementation details of our
network, I
> > make the connection via a proxy server. I've previously used the
> > java.net.HttpURLConnection class, and specified a proxy by setting the
http
> > proxy settings (http.proxyHost/http.proxyPort/http.proxySet) as system
> > properties. The code to open the connection itself was fairly
> > straightforward ('url' in the snippet below is a java.net.URL object);
> >
> >
>
--------------------------------------------------------------------------------

> >
> > HttpURLConnection conn = (HttpURLConnection) url.openConnection();
> >
> >
>
--------------------------------------------------------------------------------

> >
> > However...another application has deployed into the same JVM that my
> > application lives in, and due to co-existence issues (insert long story
> > here) I can no longer set these properties in the JVM. To try to just
set
> > the proxy on a connection-by-connection basis, I've changed my
application
> > code to try to use the HttpClient class to create the connection, and a
> > HostConfiguration object to set the proxy details;
> >
> >
>
--------------------------------------------------------------------------------

> >
> >       HttpClient client = new HttpClient();
> >       PostMethod postMethod = new PostMethod(url.toString());
> >
> >       // ---- set various headers ----
> >       RequestEntity re = new StringRequestEntity(data);
> >       postMethod.setRequestEntity(re);
> >       HostConfiguration hostConfig = new HostConfiguration();
> >
> >       // the 'proxy' object holds the server name and port
> >       hostConfig.setProxy(proxy.getProxyServer(),
proxy.getProxyPort());
> >
>
>
>
> > client.setHostConfiguration(hostConfig);
>
> Do not do this. Pass the host configuration as a parameter to the
> HttpClient#executeMethod
>
> >
> >       // do the send
> >       int status = client.executeMethod(postMethod);
> >
>
> int status = client.executeMethod(hostConfig, postMethod);
>
> Hope this helps
>
> Oleg
>
> >
>
--------------------------------------------------------------------------------

> >
> > The proxy server/port are identical to the one I used before (when
using
> > HttpURLConnection, but I now get the following error from my server
code
> > when I tried to do the send;
> >
> >
> >
>
--------------------------------------------------------------------------------

> >
> > org.apache.commons.httpclient.HttpMethodDirector  I/O exception
> > (java.net.SocketException) caught when processing request:
> > Operation timed out: connect:could be due to invalid address
> > org.apache.commons.httpclient.HttpMethodDirector Retrying request
> >
> >
>
--------------------------------------------------------------------------------

> >
> >
> > Any help much appreciated......
> >
> > This e-mail is confidential, if you are not the intended recipient, do
not
> > retain/disclose it and please return it to us. We virus scan and
monitor
> > all e-mails but are not responsible for any damage caused by a
> > virus/alteration of our e-mail by a third party after sending.
> >
> > For more information on Standard Life, visit our website
> > http://www.standardlife.co.uk/
> >
> > The Standard Life Assurance Company, Standard Life House, 30 Lothian
Road,
> > Edinburgh EH1 2DH, is registered in Scotland (No. SZ4) and is
authorised
> > and regulated by the Financial Services Authority. Tel: 0131 225 2552 -
> > calls may be recorded or monitored.
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: httpclient-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: httpclient-dev-help@jakarta.apache.org
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: httpclient-dev-help@jakarta.apache.org
>


This e-mail is confidential, if you are not the intended recipient, do not
retain/disclose it and please return it to us. We virus scan and monitor
all e-mails but are not responsible for any damage caused by a
virus/alteration of our e-mail by a third party after sending.

For more information on Standard Life, visit our website
http://www.standardlife.co.uk/

The Standard Life Assurance Company, Standard Life House, 30 Lothian Road,
Edinburgh EH1 2DH, is registered in Scotland (No. SZ4) and is authorised
and regulated by the Financial Services Authority. Tel: 0131 225 2552 -
calls may be recorded or monitored.


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpclient-dev-help@jakarta.apache.org


Re: Problem with HttpClient & HostConfiguration

Posted by Oleg Kalnichevski <ol...@apache.org>.
On Wed, 2006-03-29 at 09:41 +0100, greg_watson@standardlife.com wrote:
> 
> 
> 
> I had a method which opens up http connections to URLs outside our
> firewall, and in order to hide the implementation details of our network, I
> make the connection via a proxy server. I've previously used the
> java.net.HttpURLConnection class, and specified a proxy by setting the http
> proxy settings (http.proxyHost/http.proxyPort/http.proxySet) as system
> properties. The code to open the connection itself was fairly
> straightforward ('url' in the snippet below is a java.net.URL object);
> 
> --------------------------------------------------------------------------------
> 
> HttpURLConnection conn = (HttpURLConnection) url.openConnection();
> 
> --------------------------------------------------------------------------------
> 
> However...another application has deployed into the same JVM that my
> application lives in, and due to co-existence issues (insert long story
> here) I can no longer set these properties in the JVM. To try to just set
> the proxy on a connection-by-connection basis, I've changed my application
> code to try to use the HttpClient class to create the connection, and a
> HostConfiguration object to set the proxy details;
> 
> --------------------------------------------------------------------------------
> 
>       HttpClient client = new HttpClient();
>       PostMethod postMethod = new PostMethod(url.toString());
> 
>       // ---- set various headers ----
>       RequestEntity re = new StringRequestEntity(data);
>       postMethod.setRequestEntity(re);
>       HostConfiguration hostConfig = new HostConfiguration();
> 
>       // the 'proxy' object holds the server name and port
>       hostConfig.setProxy(proxy.getProxyServer(), proxy.getProxyPort());
>       



> client.setHostConfiguration(hostConfig);

Do not do this. Pass the host configuration as a parameter to the
HttpClient#executeMethod

> 
>       // do the send
>       int status = client.executeMethod(postMethod);
> 

int status = client.executeMethod(hostConfig, postMethod);

Hope this helps

Oleg

> --------------------------------------------------------------------------------
> 
> The proxy server/port are identical to the one I used before (when using
> HttpURLConnection, but I now get the following error from my server code
> when I tried to do the send;
> 
> 
> --------------------------------------------------------------------------------
> 
> org.apache.commons.httpclient.HttpMethodDirector  I/O exception
> (java.net.SocketException) caught when processing request:
> Operation timed out: connect:could be due to invalid address
> org.apache.commons.httpclient.HttpMethodDirector Retrying request
> 
> --------------------------------------------------------------------------------
> 
> 
> Any help much appreciated......
> 
> This e-mail is confidential, if you are not the intended recipient, do not
> retain/disclose it and please return it to us. We virus scan and monitor
> all e-mails but are not responsible for any damage caused by a
> virus/alteration of our e-mail by a third party after sending.
> 
> For more information on Standard Life, visit our website
> http://www.standardlife.co.uk/
> 
> The Standard Life Assurance Company, Standard Life House, 30 Lothian Road,
> Edinburgh EH1 2DH, is registered in Scotland (No. SZ4) and is authorised
> and regulated by the Financial Services Authority. Tel: 0131 225 2552 -
> calls may be recorded or monitored.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: httpclient-dev-help@jakarta.apache.org
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpclient-dev-help@jakarta.apache.org