You are viewing a plain text version of this content. The canonical link for it is here.
Posted to httpclient-users@hc.apache.org by Oleg Kalnichevski <ol...@apache.org> on 2009/08/27 16:19:21 UTC

Re: ThreadSafeClientConnManager and java.net.SocketException: Connection reset

On Wed, Aug 26, 2009 at 01:19:17PM -0700, droidin.net wrote:
> 
> I define HttpClient in 2 different ways:
> 1. Plain vanilla: client = new DefaultHttpClient();
> 2. Thread safe:
>     private DefaultHttpClient getThreadSafeHttpClient() {
>         HttpParams params = new BasicHttpParams();
>         params.setParameter("http.useragent", USER_AGENT);
>         HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
>         HttpProtocolParams.setContentCharset(params, "UTF-8");
>         final SchemeRegistry registry = new SchemeRegistry();
>         registry.register(new Scheme("http",
> PlainSocketFactory.getSocketFactory(), 80));
>         registry.register(new Scheme("https",
> PlainSocketFactory.getSocketFactory(), 443));

This.

Oleg



>         final ThreadSafeClientConnManager manager = new
> ThreadSafeClientConnManager(params, registry);
>         return new DefaultHttpClient(manager, params);
>     }
> 
> Then I run same JUnit test for both client types (simple GET request). #1
> always runs fine, #2 always fails with "java.net.SocketException: Connection
> reset". Debug/stacktrace output attached (fictitious site)
> 
> I never get a chance to do anything with entity object since error is thrown
> at client#execute call
> 
> http://www.nabble.com/file/p25157321/error.log error.log 
> -- 
> View this message in context: http://www.nabble.com/ThreadSafeClientConnManager-and-java.net.SocketException%3A-Connection-reset-tp25157321p25157321.html
> Sent from the HttpClient-User mailing list archive at Nabble.com.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
> 

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


Re: ThreadSafeClientConnManager and java.net.SocketException: Connection reset

Posted by "droidin.net" <dr...@droidin.net>.
Thanks Oleg, I just figured it out myself (it helps to read your tutorial :)
For anyone out there interested here's the code that worked for me

SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory();
sslSocketFactory.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
registry.register(new Scheme("https", sslSocketFactory, 443));



olegk wrote:
> 
> droidin.net wrote:
>> Hi Oleg,
>> 
>> It's ether nibble or I'm slow - I only got word "This" from your reply.
>> If
>> I'm doing these 2 lines wrong how should I do it?
>> 
>> Regards,
>> 
>> Bo
>> 
> 
> Sorry about being so terse. You certainly do not want PlainSocketFactory 
> to be registered as a socket factory for the HTTPS scheme. Use 
> SSLSocketFactory instead.
> 
> Hope this helps
> 
> Oleg
> 
> 
>> 
>> olegk wrote:
>>> On Wed, Aug 26, 2009 at 01:19:17PM -0700, droidin.net wrote:
>>>> I define HttpClient in 2 different ways:
>>>> 1. Plain vanilla: client = new DefaultHttpClient();
>>>> 2. Thread safe:
>>>>     private DefaultHttpClient getThreadSafeHttpClient() {
>>>>         HttpParams params = new BasicHttpParams();
>>>>         params.setParameter("http.useragent", USER_AGENT);
>>>>         HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
>>>>         HttpProtocolParams.setContentCharset(params, "UTF-8");
>>>>         final SchemeRegistry registry = new SchemeRegistry();
>>>>         registry.register(new Scheme("http",
>>>> PlainSocketFactory.getSocketFactory(), 80));
>>>>         registry.register(new Scheme("https",
>>>> PlainSocketFactory.getSocketFactory(), 443));
>>> This.
>>>
>>> Oleg
>>>
>>>
>>>
>>>>         final ThreadSafeClientConnManager manager = new
>>>> ThreadSafeClientConnManager(params, registry);
>>>>         return new DefaultHttpClient(manager, params);
>>>>     }
>>>>
>>>> Then I run same JUnit test for both client types (simple GET request).
>>>> #1
>>>> always runs fine, #2 always fails with "java.net.SocketException:
>>>> Connection
>>>> reset". Debug/stacktrace output attached (fictitious site)
>>>>
>>>> I never get a chance to do anything with entity object since error is
>>>> thrown
>>>> at client#execute call
>>>>
>>>> http://www.nabble.com/file/p25157321/error.log error.log 
>>>> -- 
>>>> View this message in context:
>>>> http://www.nabble.com/ThreadSafeClientConnManager-and-java.net.SocketException%3A-Connection-reset-tp25157321p25157321.html
>>>> Sent from the HttpClient-User mailing list archive at Nabble.com.
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>>>> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>>> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>>>
>>>
>>>
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/ThreadSafeClientConnManager-and-java.net.SocketException%3A-Connection-reset-tp25157321p25177945.html
Sent from the HttpClient-User mailing list archive at Nabble.com.


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


Re: ThreadSafeClientConnManager and java.net.SocketException: Connection reset

Posted by Oleg Kalnichevski <ol...@apache.org>.
droidin.net wrote:
> Hi Oleg,
> 
> It's ether nibble or I'm slow - I only got word "This" from your reply. If
> I'm doing these 2 lines wrong how should I do it?
> 
> Regards,
> 
> Bo
> 

Sorry about being so terse. You certainly do not want PlainSocketFactory 
to be registered as a socket factory for the HTTPS scheme. Use 
SSLSocketFactory instead.

Hope this helps

Oleg


> 
> olegk wrote:
>> On Wed, Aug 26, 2009 at 01:19:17PM -0700, droidin.net wrote:
>>> I define HttpClient in 2 different ways:
>>> 1. Plain vanilla: client = new DefaultHttpClient();
>>> 2. Thread safe:
>>>     private DefaultHttpClient getThreadSafeHttpClient() {
>>>         HttpParams params = new BasicHttpParams();
>>>         params.setParameter("http.useragent", USER_AGENT);
>>>         HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
>>>         HttpProtocolParams.setContentCharset(params, "UTF-8");
>>>         final SchemeRegistry registry = new SchemeRegistry();
>>>         registry.register(new Scheme("http",
>>> PlainSocketFactory.getSocketFactory(), 80));
>>>         registry.register(new Scheme("https",
>>> PlainSocketFactory.getSocketFactory(), 443));
>> This.
>>
>> Oleg
>>
>>
>>
>>>         final ThreadSafeClientConnManager manager = new
>>> ThreadSafeClientConnManager(params, registry);
>>>         return new DefaultHttpClient(manager, params);
>>>     }
>>>
>>> Then I run same JUnit test for both client types (simple GET request). #1
>>> always runs fine, #2 always fails with "java.net.SocketException:
>>> Connection
>>> reset". Debug/stacktrace output attached (fictitious site)
>>>
>>> I never get a chance to do anything with entity object since error is
>>> thrown
>>> at client#execute call
>>>
>>> http://www.nabble.com/file/p25157321/error.log error.log 
>>> -- 
>>> View this message in context:
>>> http://www.nabble.com/ThreadSafeClientConnManager-and-java.net.SocketException%3A-Connection-reset-tp25157321p25157321.html
>>> Sent from the HttpClient-User mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>>> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>>
>>
>>
> 


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


Re: ThreadSafeClientConnManager and java.net.SocketException: Connection reset

Posted by "droidin.net" <dr...@droidin.net>.
Hi Oleg,

It's ether nibble or I'm slow - I only got word "This" from your reply. If
I'm doing these 2 lines wrong how should I do it?

Regards,

Bo


olegk wrote:
> 
> On Wed, Aug 26, 2009 at 01:19:17PM -0700, droidin.net wrote:
>> 
>> I define HttpClient in 2 different ways:
>> 1. Plain vanilla: client = new DefaultHttpClient();
>> 2. Thread safe:
>>     private DefaultHttpClient getThreadSafeHttpClient() {
>>         HttpParams params = new BasicHttpParams();
>>         params.setParameter("http.useragent", USER_AGENT);
>>         HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
>>         HttpProtocolParams.setContentCharset(params, "UTF-8");
>>         final SchemeRegistry registry = new SchemeRegistry();
>>         registry.register(new Scheme("http",
>> PlainSocketFactory.getSocketFactory(), 80));
>>         registry.register(new Scheme("https",
>> PlainSocketFactory.getSocketFactory(), 443));
> 
> This.
> 
> Oleg
> 
> 
> 
>>         final ThreadSafeClientConnManager manager = new
>> ThreadSafeClientConnManager(params, registry);
>>         return new DefaultHttpClient(manager, params);
>>     }
>> 
>> Then I run same JUnit test for both client types (simple GET request). #1
>> always runs fine, #2 always fails with "java.net.SocketException:
>> Connection
>> reset". Debug/stacktrace output attached (fictitious site)
>> 
>> I never get a chance to do anything with entity object since error is
>> thrown
>> at client#execute call
>> 
>> http://www.nabble.com/file/p25157321/error.log error.log 
>> -- 
>> View this message in context:
>> http://www.nabble.com/ThreadSafeClientConnManager-and-java.net.SocketException%3A-Connection-reset-tp25157321p25157321.html
>> Sent from the HttpClient-User mailing list archive at Nabble.com.
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
>> For additional commands, e-mail: httpclient-users-help@hc.apache.org
>> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: httpclient-users-unsubscribe@hc.apache.org
> For additional commands, e-mail: httpclient-users-help@hc.apache.org
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/ThreadSafeClientConnManager-and-java.net.SocketException%3A-Connection-reset-tp25157321p25174110.html
Sent from the HttpClient-User mailing list archive at Nabble.com.


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