关键词:
1.简介
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
2.使用场景
HttpClient可以灵活地访问网络资源,他不仅可以灵活地在客户端访问服务端的网络资源。在服务端,也可以通过HttpClient完成跨层次访问。
3.使用
下面可以通过HttpClientUtil清晰的掌握HttpClient的基本使用方法:(GET,POST和JSON的提交)
1 public class HttpClientUtil { 2 3 public static String doGet(String url, Map<String, String> param) { 4 5 // 创建Httpclient对象 6 CloseableHttpClient httpclient = HttpClients.createDefault(); 7 8 String resultString = ""; 9 CloseableHttpResponse response = null; 10 try { 11 // 创建uri 12 URIBuilder builder = new URIBuilder(url); 13 if (param != null) { 14 //拼接请求参数 15 for (String key : param.keySet()) { 16 builder.addParameter(key, param.get(key)); 17 } 18 } 19 URI uri = builder.build(); 20 21 // 创建http GET请求 22 HttpGet httpGet = new HttpGet(uri); 23 24 // 执行请求 25 response = httpclient.execute(httpGet); 26 // 判断返回状态是否为200 27 if (response.getStatusLine().getStatusCode() == 200) { 28 resultString = EntityUtils.toString(response.getEntity(), "UTF-8"); 29 } 30 } catch (Exception e) { 31 e.printStackTrace(); 32 } finally { 33 try { 34 if (response != null) { 35 response.close(); 36 } 37 httpclient.close(); 38 } catch (IOException e) { 39 e.printStackTrace(); 40 } 41 } 42 return resultString; 43 } 44 45 public static String doGet(String url) { 46 return doGet(url, null); 47 } 48 49 public static String doPost(String url, Map<String, String> param) { 50 // 创建Httpclient对象 51 CloseableHttpClient httpClient = HttpClients.createDefault(); 52 //创建HttpResponse响应 53 CloseableHttpResponse response = null; 54 String resultString = ""; 55 try { 56 // 创建Http Post请求 57 HttpPost httpPost = new HttpPost(url); 58 // 创建参数列表 59 if (param != null) { 60 //拼接表单参数 61 List<NameValuePair> paramList = new ArrayList<>(); 62 for (String key : param.keySet()) { 63 paramList.add(new BasicNameValuePair(key, param.get(key))); 64 } 65 // 模拟表单 66 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList); 67 httpPost.setEntity(entity); 68 } 69 // 执行http请求 70 response = httpClient.execute(httpPost); 71 resultString = EntityUtils.toString(response.getEntity(), "utf-8"); 72 } catch (Exception e) { 73 e.printStackTrace(); 74 } finally { 75 try { 76 response.close(); 77 } catch (IOException e) { 78 // TODO Auto-generated catch block 79 e.printStackTrace(); 80 } 81 } 82 83 return resultString; 84 } 85 86 public static String doPost(String url) { 87 return doPost(url, null); 88 } 89 90 public static String doPostJson(String url, String json) { 91 // 创建Httpclient对象 92 CloseableHttpClient httpClient = HttpClients.createDefault(); 93 CloseableHttpResponse response = null; 94 String resultString = ""; 95 try { 96 // 创建Http Post请求 97 HttpPost httpPost = new HttpPost(url); 98 // 创建请求内容 99 StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); 100 //设置Post请求 101 httpPost.setEntity(entity); 102 // 执行http请求 103 response = httpClient.execute(httpPost); 104 resultString = EntityUtils.toString(response.getEntity(), "utf-8"); 105 } catch (Exception e) { 106 e.printStackTrace(); 107 } finally { 108 try { 109 response.close(); 110 } catch (IOException e) { 111 // TODO Auto-generated catch block 112 e.printStackTrace(); 113 } 114 } 115 116 return resultString; 117 } 118 }
httpclient入门
HttpClient是一个实现了Http协议的功能强大的编程工具包。要使用HttpClient,通常需要以下几部:1、常见一个HttpClient实例2、创建一个get或者post方法3、告诉HttpClient去执行获取的方法4、读取服务器的响应5、释放连接6、处理响应的内... 查看详情
javaspring之resttemplate的使用
...使用HTTP客户端,主要有四种:JDK原生的URLConnection、Apache的HttpClient、Netty的异步HTTPClient,Spring的RestTemplate。 解放了原先HttpClient的复杂提交,java中调用RESTful服务很典型的是使用HttpClient,对于常用的REST操作,这些方法属于... 查看详情
httpclient之httpcontext使用(代码片段)
...sationcontextandstateinformationbetweenrequests. 上面这段话摘自httpclient官网,大体意思是逻辑会话相关的多个请求序列应该使用同一个HttpContext实例,这样就可以让会话信息和状态信息在多个请求之间自动广播。 官网上还给出一段... 查看详情
httpclient入门三
...。这个时候,我们就需要使用到代理ip来进行访问了。在HttpCLient中,提供了一个org.apache.http.client.config.RequestConfig这个类,可以通过它的custom()方法,来取得它的内 查看详情
为我的应用程序需要与之通信的每个主机使用一个 HttpClient 实例是不是可以?
】为我的应用程序需要与之通信的每个主机使用一个HttpClient实例是不是可以?【英文标题】:IsitfinetouseoneHttpClientinstanceforeachhostmyapplicationneedstotalkto?为我的应用程序需要与之通信的每个主机使用一个HttpClient实例是否可以?【发... 查看详情
httpclient之基本使用(代码片段)
...;<groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.5<... 查看详情
http基础与android之(安卓与服务器通信)——使用httpclient和httpurlconnection
...数据的三种方式2使用HTTP协议访问网络3HttpCient简单来说用HttpClient发送请求接收响应都很简单只需要五大步骤即可要牢记4DefaultHttpClientGET方式POST 查看详情
优雅编码之——传统项目中,使用openfeign替换掉项目中的httpclient(代码片段)
使用springcloud时,当遇到服务与其他服务调用的场景,一般都会使用springcloudopenfeign来进行调用。通过@feign注解让代码变得非常简单而又优雅,即便是跨服务的调用,写起来就像项目内部自己调自己的方法一样... 查看详情
优雅编码之——传统项目中,使用openfeign替换掉项目中的httpclient(代码片段)
使用springcloud时,当遇到服务与其他服务调用的场景,一般都会使用springcloudopenfeign来进行调用。通过@feign注解让代码变得非常简单而又优雅,即便是跨服务的调用,写起来就像项目内部自己调自己的方法一样... 查看详情
elk学习笔记之kibana入门使用
Kibana入门使用: 第一次导入索引:修改展示时间,不然查不到数据:点Discover,查阅数据:如果要添加新的index:点击Visualize,创建chart:点击Dashboard,布局:DashBoard完工啦!!!嘿嘿嘿 查看详情
kotlin基础从入门到进阶系列讲解(入门篇)android之gson的使用(代码片段)
Kotlin基础从入门到进阶系列讲解(入门篇)Android之GSON的使用Android之GSON的使用Android之GSON的使用->返回总目录<-Google提供的GSON开源库可以让解析JSON数据的工作简单到让你不敢想象的地步项目中需要添加GSON库的依赖。编辑app/b... 查看详情
httpclient
最近写了些接口,使用到了HttpClient,这里留作复习 HttpClient有新旧之分org.apache.commons.httpclient.HttpClient和org.apache.http.client.HttpClient org.apache.http.client.HttpClient取代了org.apache.commons.httpclient.HttpClient 查看详情
使用依赖注入管理多个 HttpClient 实例
】使用依赖注入管理多个HttpClient实例【英文标题】:ManagingmultipleinstancesofHttpClientusingDependencyInjection【发布时间】:2016-11-2013:27:54【问题描述】:我正在为我的Web应用程序与之通信的每个不同API创建一个HttpClient实例。我想使用Sim... 查看详情
轻松把玩httpclient之封装httpclient工具类,插件式配置header(代码片段)
上篇文章介绍了插件式配置HttpClient,本文将介绍插件式配置Header。 为什么要配置header在前面已经提到了,还里再简单说一下,要使用HttpClient模拟请求,去访问各种接口或者网站资源,都有可能有... 查看详情
cloudstack使用之入门1
cloudstack是管理套件,可以管理基于vmwareESXI、xenserver、hyperv、kvm、baremetal、ovm、LXC、ovm3的虚拟化;注意:1管理vmware需要vcenter、集群、数据中心2必须有存储:nfs协议、vmfs协议(nfs、smb、cifs、s3、swif),否则无法创建”资源域“ 查看详情
linux入门之磁盘管理dd命令使用
Linux入门之磁盘管理(5)dd命令使用在Linux中,经常需要一些数据读写等测试,还有文件以及其它数据的备份迁移,一般使用cp命令可以解决一部分,但是其无法进行控制数据的流向及动作,这时就可以使用dd命令,来进行灵活的数... 查看详情
springcloud之eureka入门使用
搭建Eureka服务端(注册中心) 新建一个maven项目项目名为eureka-server pom.xml<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://mave 查看详情
hystrix熔断器之使用入门
用户将命令通过Hytrix调用(通过继承HystrixCommand),通过Hystrix实现对调用异常的控制,以此来隔离被调用方对调用方的影响。如果某程序或class要使用Hystrix,只需简单继承HystrixCommand/HystrixObservableCommand并重写run()/construct(),然后... 查看详情