1. 程式人生 > >HttpClient 不同版本的超時時間設定

HttpClient 不同版本的超時時間設定

HttpClient 4.3。HttpClient這貨和Lucene一樣,每個版本的API都變化很大,這有點讓人頭疼。就好比建立一個HttpClient物件吧,每一個版本的都不一樣,

3.X是這樣的

?

1

HttpClient httpClient=newDefaultHttpClient();

4.3是這樣的

?

1

CloseableHttpClient httpClient = HttpClients.createDefault();

當然,上面這些變化只不過是一些小變化,大家看看API大家就都會了。

我要講的是超時設定,HttpClient有三種超時設定,最近比較忙,沒時間具體歸納總結,以後再補上,我這裡就講一些最簡單最易用的超時設定方法。

這是個3.X的超時設定方法

?

1

2

3

HttpClient client = newHttpClient();

client.setConnectionTimeout(30000); 

client.setTimeout(30000);

?

1

2

HttpClient httpClient= newHttpClient(); 

httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);

4.X版本的超時設定(4.3後已過時)

?

1

2

3

HttpClient httpClient=newDefaultHttpClient();

httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,2000);//連線時間

httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,

2000);//資料傳輸時間

4.3版本超時設定

?

1

2

3

4

5

CloseableHttpClient httpClient = HttpClients.createDefault();

HttpGet httpGet=newHttpGet("http://www.baidu.com");//HTTP Get請求(POST雷同)

RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();//設定請求和傳輸超時時間

httpGet.setConfig(requestConfig);

httpClient.execute(httpGet);//執行請求

BTW,4.3版本不設定超時的話,一旦伺服器沒有響應,等待時間N久(>24小時)。