使用HttpClient,一般都需要設置連接超時時間和獲取數據超時時間。這兩個參數很重要,目的是為了防止訪問其他http時,由於超時導致自己的應用受影響。
4.5版本中,這兩個參數的設置都抽象到了RequestConfig中,由相應的Builder構建,具體的例子如下:
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://www.baidu.com");
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000).setConnectionRequestTimeout(1000)
.setSocketTimeout(5000).build();
httpGet.setConfig(requestConfig);
CloseableHttpResponse response = null;
try {
response = httpclient.execute(httpGet);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("得到的結果:" + response.getStatusLine());//得到請求結果
HttpEntity entity = response.getEntity();//得到請求回來的數據
String s = EntityUtils.toString(response.getEntity(), "UTF-8");
System.out.println(s);
setConnectTimeout:設置連接超時時間,單位毫秒。
setConnectionRequestTimeout:設置從connect Manager獲取Connection 超時時間,單位毫秒。這個屬性是新加的屬性,因為目前版本是可以共享連接池的。
setSocketTimeout:請求獲取數據的超時時間,單位毫秒。 如果訪問一個接口,多少時間內無法返回數據,就直接放棄此次調用。
