HttpClient 4.3与4.3版本以下版本 close 比较

出处:https://blog.csdn.net/u011136197/article/details/78755935

网上利用java发送http请求的代码很多,一搜一大把,有的利用的是java.net.*下的HttpURLConnection,有的用httpclient,而且发送的代码也分门别类。今天我们主要来说的是利用httpclient发送请求。

httpclient又可分为

  • httpclient3.x
  • httpclient4.x到httpclient4.3以下
  • httpclient4.3以上


不同httpclient版本其请求发送的方式也不一样,下面来做个归纳

 

httpclient3.x

HttpClient client = new HttpClient();  
// 设置代理服务器地址和端口  
// client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port);  
// 使用 GET 方法 ,如果服务器需要通过 HTTPS 连接,那只需要将下面 URL 中的 http 换成 https  
HttpMethodmethod = new GetMethod("http://java.sun.com");  
// 使用POST方法  
// HttpMethod method = new PostMethod("http://java.sun.com");  
client.executeMethod(method);  
// 打印服务器返回的状态  
System.out.println(method.getStatusLine());  
// 打印返回的信息  
System.out.println(method.getResponseBodyAsString());  
// 释放连接  
method.releaseConnection();  


httpclient4.x到httpclient4.3以下

public void getUrl(String url, String encoding) throws ClientProtocolException, IOException {  
        HttpClient client = new DefaultHttpClient();  
        HttpGet get = new HttpGet(url);  
                //设置超时时间  
                HttpParams params = client.getParams();  
                HttpConnectionParams.setConnectionTimeout(params, (int) 10 * 1000);  
                HttpConnectionParams.setSoTimeout(params, 10 * 1000);  
        HttpResponse response = client.execute(get);  
        HttpEntity entity = response.getEntity();  
        if (entity != null) {  
            InputStream instream = entity.getContent();  
            try {  
                BufferedReader reader = new BufferedReader(new InputStreamReader(instream, encoding));  
                System.out.println(reader.readLine());  
            } catch (Exception e) {  
                e.printStackTrace();  
            } finally {  
                instream.close();  
            }  
        }  
        // 关闭连接.  
        client.getConnectionManager().shutdown();  
    }  

 

httpclient4.3以上

import org.apache.http.HttpEntity;  
import org.apache.http.HttpResponse;  
import org.apache.http.client.methods.HttpGet;  
import org.apache.http.impl.client.CloseableHttpClient;  
import org.apache.http.impl.client.HttpClients;  
import org.apache.http.util.EntityUtils;  
  
  
public static String getResult(String urlStr) {  
        CloseableHttpClient httpClient = HttpClients.createDefault();  
        // HTTP Get请求  
        HttpGet httpGet = new HttpGet(urlStr);  
        // 设置请求和传输超时时间  
        // RequestConfig requestConfig =  
        // RequestConfig.custom().setSocketTimeout(TIME_OUT).setConnectTimeout(TIME_OUT).build();  
        // httpGet.setConfig(requestConfig);  
        String res = "";  
        try {  
            // 执行请求  
            HttpResponse getAddrResp = httpClient.execute(httpGet);  
            HttpEntity entity = getAddrResp.getEntity();  
            if (entity != null) {  
                res = EntityUtils.toString(entity);  
            }  
            log.info("响应" + getAddrResp.getStatusLine());  
        } catch (Exception e) {  
            log.error(e.getMessage(), e);  
            return res;  
        } finally {  
            try {  
                httpClient.close();  
            } catch (IOException e) {  
                log.error(e.getMessage(), e);  
                return res;  
            }  
        }  
        return res;  
    }  


 
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值