热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HttpClient4.3与4.3版本以下版本close比较

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

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

httpclient又可分为

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

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

 

httpclient3.x

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

 

 

httpclient4.x到httpclient4.3以下

 

Java代码   收藏代码
  1. public void getUrl(String url, String encoding) throws ClientProtocolException, IOException {  
  2.         HttpClient client = new DefaultHttpClient();  
  3.         HttpGet get = new HttpGet(url);  
  4.                 //设置超时时间  
  5.                 HttpParams params = client.getParams();  
  6.                 HttpConnectionParams.setConnectionTimeout(params, (int10 * 1000);  
  7.                 HttpConnectionParams.setSoTimeout(params, 10 * 1000);  
  8.         HttpResponse response = client.execute(get);  
  9.         HttpEntity entity = response.getEntity();  
  10.         if (entity != null) {  
  11.             InputStream instream = entity.getContent();  
  12.             try {  
  13.                 BufferedReader reader = new BufferedReader(new InputStreamReader(instream, encoding));  
  14.                 System.out.println(reader.readLine());  
  15.             } catch (Exception e) {  
  16.                 e.printStackTrace();  
  17.             } finally {  
  18.                 instream.close();  
  19.             }  
  20.         }  
  21.         // 关闭连接.  
  22.         client.getConnectionManager().shutdown();  
  23.     }  

 

 

 

httpclient4.3以上

 

Java代码   收藏代码
  1. import org.apache.http.HttpEntity;  
  2. import org.apache.http.HttpResponse;  
  3. import org.apache.http.client.methods.HttpGet;  
  4. import org.apache.http.impl.client.CloseableHttpClient;  
  5. import org.apache.http.impl.client.HttpClients;  
  6. import org.apache.http.util.EntityUtils;  
  7.   
  8.   
  9. public static String getResult(String urlStr) {  
  10.         CloseableHttpClient httpClient = HttpClients.createDefault();  
  11.         // HTTP Get请求  
  12.         HttpGet httpGet = new HttpGet(urlStr);  
  13.         // 设置请求和传输超时时间  
  14.         // RequestConfig requestConfig =  
  15.         // RequestConfig.custom().setSocketTimeout(TIME_OUT).setConnectTimeout(TIME_OUT).build();  
  16.         // httpGet.setConfig(requestConfig);  
  17.         String res = "";  
  18.         try {  
  19.             // 执行请求  
  20.             HttpResponse getAddrResp = httpClient.execute(httpGet);  
  21.             HttpEntity entity = getAddrResp.getEntity();  
  22.             if (entity != null) {  
  23.                 res = EntityUtils.toString(entity);  
  24.             }  
  25.             log.info("响应" + getAddrResp.getStatusLine());  
  26.         } catch (Exception e) {  
  27.             log.error(e.getMessage(), e);  
  28.             return res;  
  29.         } finally {  
  30.             try {  
  31.                 httpClient.close();  
  32.             } catch (IOException e) {  
  33.                 log.error(e.getMessage(), e);  
  34.                 return res;  
  35.             }  
  36.         }  
  37.         return res;  
  38.     }  

 


推荐阅读
  • 本文介绍如何通过Java代码调用阿里云短信服务API来实现短信验证码的发送功能,包括必要的依赖添加和关键代码示例。 ... [详细]
  • 本文探讨了在使用Apache HttpClient 4.x(作为commons-httpclient 3.x的后续版本)时,如何配置默认的HttpContext,以确保每次执行请求时无需显式传递上下文。 ... [详细]
  • django项目中使用手机号登录
    本文使用聚合数据的短信接口,需要先获取到申请接口的appkey和模板id项目目录下创建ubtils文件夹,定义返回随机验证码和调取短信接口的函数function.py文件se ... [详细]
  • C#爬虫Fiddler插件开发自动生成代码
    哈喽^_^一般我们在编写网页爬虫的时候经常会使用到Fiddler这个工具来分析http包,而且通常并不是分析一个包就够了的,所以为了把更多的时间放在分析http包上,自动化生成 ... [详细]
  • PHP 5.4.8 编译安装指南
    本文详细介绍了如何在Linux环境下编译安装PHP 5.4.8,并配置为FastCGI模式运行。包括所需依赖包的安装、源代码下载、编译配置及启动服务等步骤。 ... [详细]
  • 本文详细探讨了 Java 中 com.codahale.metrics.servlets.AdminServlet.() 方法的实现与应用,并提供了多个实际项目中的代码示例,帮助开发者更好地理解和使用这一方法。 ... [详细]
  • 本文主要解决了在编译CM10.2时出现的关于Samsung Exynos 4 HDMI HAL库中SecHdmiV4L2Utils.cpp文件的编译错误。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • Lua基本语法lua与C#的交互(相当简单详细的例子)
    lua脚本与C#的交互本文提供全流程,中文翻译。Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验——高分辨率用户请根据需求调整网页缩放比例)1LuaAndC#——L ... [详细]
  • 本文提供了一个Android应用中用于抓取网页信息并下载图片的示例代码。通过该代码,开发者可以轻松实现从指定URL获取网页内容及其中的图片资源。 ... [详细]
  • 本文介绍了在解决Hive表中复杂数据结构平铺化问题后,如何通过创建视图来准确计算广告日志的曝光PV,特别是针对用户对应多个标签的情况。同时,详细探讨了UDF的使用方法及其在实际项目中的应用。 ... [详细]
  • 近期在研究Java IO流技术时,遇到了一个关于如何正确读取Doc文档而不出现乱码的问题。本文将详细介绍使用Apache POI库处理Doc和Docx文件的具体方法,包括必要的库引入和示例代码。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
author-avatar
pxrty_635
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有