import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
CloseableHttpClient client = null; HttpRequestBase signedRequest = Client.sign(request); client = HttpClients.custom().build(); RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5000) .setConnectionRequestTimeout(1000).setSocketTimeout(5000).build(); signedRequest.setConfig(requestConfig); HttpResponse response = client.execute(signedRequest); int statusCode = response.getStatusLine().getStatusCode(); HttpEntity resEntity = response.getEntity(); String result = EntityUtils.toString(resEntity, "UTF-8");
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);
//設置請求超時時間
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(2000)
.setConnectionRequestTimeout(2000)
.setSocketTimeout(2000)
.build();
說明
ConnectionRequestTimeout
httpclient使用連接池來管理連接,這個時間就是從連接池獲取連接的超時時間,可以想象下數據庫連接池
ConnectTimeout
連接建立時間,三次握手完成時間
SocketTimeout
數據傳輸過程中數據包之間間隔的最大時間