httpclient之入门使用

纳木错星空 纳木错星空     2022-09-08     327

关键词:

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(),然后... 查看详情