hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Oleg Kalnichevski <ol...@apache.org>
Subject Re: SOME QUESTIONS ABOUT HTTPCLIENT 4
Date Sat, 31 Jan 2009 12:33:02 GMT
Joan Balagueró wrote:
> Hello,
> 
>  
> 
> I’ve just migrated the code from HttpClient3 to HttpClient4, and before 
> starting tests I’d like to make you some questions:
> 
>  
> 
>    1. When I set the Schema “new Scheme("http",
>       PlainSocketFactory.getSocketFactory(), 80)”, what does it mean? It
>       means that the “ThreadSafeClientConnManager” can only send http
>       requests, or it can only send http requests to destination port 80?
> 

This value represents a default port for a particular scheme. If a 
request URI does not explicitly specify a port the default port value 
will be used when connecting to the target host

'http://www.whatever.com/' -> connect to www.whatever.com:80


>  
> 
>  
> 
>    2. With HttpClient3, I set the ‘retryHandler’ at method level with:
> 
>       objPost.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
> new HttpRetryHandler(3));
> 
>  
> 
>       With HttpClient4, this is similar but at connection level:
> 
> this.objHttp.setHttpRequestRetryHandler(new 
> DefaultHttpRequestRetryHandler(3, false));
> 
>  
> 
> Is it right? 

This is correct.


For every get/post HttpClient will retry the request 3
> times for any non-fatal error? Or should I set the retry handler at 
> method level like I used to do with HttpClient3? (I’ve not seen a method 
> to do this).
> 
>  
> 
>  
> 
>    3. With HttpClient3, I used ‘HttpState’ for managing cookies.
> 
> With HttpClient4, I set a cookieStore to a HttpContext in this way:
> 
>  
> 
>   HttpContext localContext = new BasicHttpContext();
> 
>   CookieStore cookieStore  = new BasicCookieStore();
> 
>  
> 
>   // Set cookies.
> 
>   for (int j = 0; j < cookieSize; j++)
> 
>   {
> 
>    BasicClientCookie bcc = new 
> BasicClientCookie(this.arrCookies[j].getName(), 
> this.arrCookies[j].getValue());
> 
>    cookieStore.addCookie(bcc);
> 
>   }
> 
>  
> 
>   localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
> 
>   this.objHttp.execute(objGet, localContext)
> 
>  
> 
> And, when I receive the server response, I get cookies using the same 
> HttpContext:
> 
> List<Cookie> auxCookies = 
> ((CookieStore)localContext.getAttribute(ClientContext.COOKIE_STORE)).getCookies();
> 
>  
> 
> Is this the right way to do this?
> 
>  

Yes, it is

> 
>  
> 
>    4. In HttpClient3, the documentation says that a small performance
>       can be gained by disabling cookies. The same for HttpClient4? If I
>       want to disable cookies, what I should to do? I saw this piece of
>       code on Internet, but I’m not sure if it’s right:
> 
>  
> 
> this.objHttp.setCookieStore(null);
> 
> this.objHttp.setCookieSpecs(null);
> 
>  

To completely disable cookie processing remove these two protocol 
interceptors from the protocol processing chain

---
DefaultHttpClient httpclient = new DefaultHttpClient(); 
httpclient.removeRequestInterceptorByClass(RequestAddCookies.class);
httpclient.removeResponseInterceptorByClass(ResponseProcessCookies.class);
---

> 
>  
> 
>    5. Receive a null HttpEntity means that the server sent an empty
>       response?
> 

No, that usually can only happen if an HTTP response may not enclose a 
response body at all: it is a response to a HEAD request, or a response 
with status code 204, 205, 304.

Hope this helps

Oleg

>  
> 
>  
> 
> Thanks for your time.
> 
> 	
> 
> *JOAN BALAGUERÓ *
> 
> *GRUPO VENTUS*
> 
> C/ Balmes 195, 4º 4ª // 08006 BCN
> Telf.: 902 43 05 75 // Fax: 93 292 01 49
> 
> www.grupoventus.com <http://www.grupoventus.com>
> 
>  __
> 
>  
> 
>  
> 
>  
> 


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


Mime
View raw message