前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HttpClient入门学习一

HttpClient入门学习一

作者头像
别先生
发布2020-12-01 10:29:24
8020
发布2020-12-01 10:29:24
举报
文章被收录于专栏:别先生别先生

1、HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

  虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

  HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性,它不仅使客户端发送Http请求变得容易,而且也方便开发人员测试接口(基于Http协议的),提高了开发的效率,也方便提高代码的健壮性。

2、org.apache.commons.httpclient.HttpClient与org.apache.http.client.HttpClient的区别?

org.apache.commons.httpclient.HttpClient的HttpClient项目已经不再被开发新版本, 已被Apache HttpComponents项目HttpClient和HttpCore 模组取代,提供更好的性能和更大的灵活性,所以在开发中使用后者来学习或者实践的哦!

3、HttpClient 提供的主要功能,如下所示:

  1)、实现了所有 HTTP 的方法(Get、Post、Put、Head 等)。   2)、支持自动转向。   3)、支持 HTTPS 协议。   4)、支持代理服务器等。

4、httpClient的使用方法,使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可,如下所示:

  1)、创建HttpClient对象。   2)、创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象。如果需要发送POST请求,创建HttpPost对象。   3)、如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HttpParams params)方法来添加请求参数。对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。   4)、调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。   5)、调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容,此时可以对返回的结果进行处理和操作。程序可通过该对象获取服务器的响应内容。   6)、释放连接。无论执行方法是否成功,都必须释放连接。

代码语言:javascript
复制
 1 <project xmlns="http://maven.apache.org/POM/4.0.0"
 2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 4     http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>com.bie</groupId>
 8     <artifactId>httpClient</artifactId>
 9     <version>0.0.1-SNAPSHOT</version>
10     <packaging>jar</packaging>
11 
12     <name>httpClient</name>
13     <url>http://maven.apache.org</url>
14 
15     <properties>
16         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17     </properties>
18 
19     <dependencies>
20         <dependency>
21             <groupId>junit</groupId>
22             <artifactId>junit</artifactId>
23             <version>3.8.1</version>
24             <scope>test</scope>
25         </dependency>
26         <!-- httpclient的版本是4.5.2 -->
27         <dependency>
28             <groupId>org.apache.httpcomponents</groupId>
29             <artifactId>httpclient</artifactId>
30             <version>4.5.2</version>
31         </dependency>
32         <!-- apache流相关的依赖 -->
33         <dependency>
34             <groupId>commons-io</groupId>
35             <artifactId>commons-io</artifactId>
36             <version>2.5</version>
37         </dependency>
38     </dependencies>
39 
40 </project>

案例,代码,如下所示:

代码语言:javascript
复制
 1 package com.bie.httpClient;
 2 
 3 import java.io.IOException;
 4 
 5 import org.apache.http.HttpEntity;
 6 import org.apache.http.ParseException;
 7 import org.apache.http.client.ClientProtocolException;
 8 import org.apache.http.client.methods.CloseableHttpResponse;
 9 import org.apache.http.client.methods.HttpGet;
10 import org.apache.http.impl.client.CloseableHttpClient;
11 import org.apache.http.impl.client.HttpClients;
12 import org.apache.http.util.EntityUtils;
13 
14 /**
15  * 
16  * @author
17  *
18  */
19 public class HttpClientHello {
20 
21     /**
22      * HttpGet请求操作
23      */
24     public static void httpGetRequest() {
25         // 第一步,获取到httpClient客户端实例,获取到一个可关闭的httpClient客户端实例。
26         CloseableHttpClient httpClient = HttpClients.createDefault();
27         // 第二步,创建HttpGet或者HttpPost实例。
28         String uri = "https://www.cnblogs.com/";
29         HttpGet httpGet = new HttpGet(uri);
30         // 定义一个可响应的实例对象。
31         CloseableHttpResponse response = null;
32         try {
33             // 第三步,发布一个请求,使用httpClient实例发送一个http协议的Get请求。
34             response = httpClient.execute(httpGet);
35         } catch (ClientProtocolException e) {
36             // http协议异常
37             e.printStackTrace();
38         } catch (IOException e) {
39             // io异常
40             e.printStackTrace();
41         }
42         // 第四步,获取到返回的实体对象
43         HttpEntity entity = response.getEntity();
44         // 将返回结果转换为字符串进行查看(网页内容),参数一是请求返回的entity,参数二是字符集编码
45         String result = null;
46         try {
47             result = EntityUtils.toString(entity, "UTF-8");
48         } catch (ParseException e) {
49             e.printStackTrace();
50         } catch (IOException e) {
51             e.printStackTrace();
52         }
53         // 打印请求返回的结果
54         System.out.println(result.toString());
55 
56         // 第五步,关闭流,释放资源
57         try {
58             response.close();
59             httpClient.close();
60         } catch (IOException e) {
61             e.printStackTrace();
62         }
63     }
64 
65     public static void main(String[] args) {
66         HttpClientHello.httpGetRequest();
67     }
68 
69 }

5、设置请求头消息 User-Agent 模拟各种不同的浏览器,可以获取到不让你随便获取到页面。获取响应内容类型 Content-Type,可以根据此响应类型来过滤出自己想要的或者不想要的内容信息。获取响应状态 Status,根据响应的状态码来判断请求是否成功。

代码语言:javascript
复制
 1 package com.bie.httpClient.httpGet;
 2 
 3 import java.io.IOException;
 4 
 5 import org.apache.http.Header;
 6 import org.apache.http.HttpEntity;
 7 import org.apache.http.ParseException;
 8 import org.apache.http.StatusLine;
 9 import org.apache.http.client.ClientProtocolException;
10 import org.apache.http.client.methods.CloseableHttpResponse;
11 import org.apache.http.client.methods.HttpGet;
12 import org.apache.http.impl.client.CloseableHttpClient;
13 import org.apache.http.impl.client.HttpClients;
14 import org.apache.http.util.EntityUtils;
15 
16 /**
17  * 
18  * @author
19  *
20  */
21 public class HttpClientHttpGet {
22 
23     // 设置请求头消息 User-Agent 模拟浏览器
24     private static String UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0";
25 
26     /**
27      * HttpGet请求操作
28      */
29     public static void httpGetRequest() {
30         // 第一步,获取到httpClient客户端实例,获取到一个可关闭的httpClient客户端实例。
31         CloseableHttpClient httpClient = HttpClients.createDefault();
32         // 第二步,创建HttpGet或者HttpPost实例。
33         String uri = "https://www.tuicool.com/";
34         HttpGet httpGet = new HttpGet(uri);
35         // 设置请求头消息 User-Agent 模拟浏览器
36         httpGet.setHeader("User-Agent", UserAgent);
37         
38         // 定义一个可响应的实例对象。
39         CloseableHttpResponse response = null;
40         try {
41             // 第三步,发布一个请求,使用httpClient实例发送一个http协议的Get请求。
42             response = httpClient.execute(httpGet);
43             // 获取到响应的状态
44             StatusLine statusLine = response.getStatusLine();
45             System.out.println("响应状态: " + statusLine.toString() + ", 响应码: " + statusLine.getStatusCode());
46         } catch (ClientProtocolException e) {
47             // http协议异常
48             e.printStackTrace();
49         } catch (IOException e) {
50             // io异常
51             e.printStackTrace();
52         }
53         // 第四步,获取到返回的实体对象
54         HttpEntity entity = response.getEntity();
55         // 获取响应内容类型 Content-Type,获取到响应类型,从而过滤一些不想要的东西
56         Header contentType = entity.getContentType();
57         // 打印响应信息
58         System.out.println("name : " + contentType.getName() + " , value: " + contentType.getValue());
59         
60         // 将返回结果转换为字符串进行查看(网页内容),参数一是请求返回的entity,参数二是字符集编码
61         String result = null;
62         try {
63             result = EntityUtils.toString(entity, "UTF-8");
64         } catch (ParseException e) {
65             e.printStackTrace();
66         } catch (IOException e) {
67             e.printStackTrace();
68         }
69         // 打印请求返回的结果
70         // System.out.println(result.toString());
71 
72         // 第五步,关闭流,释放资源
73         try {
74             response.close();
75             httpClient.close();
76         } catch (IOException e) {
77             e.printStackTrace();
78         }
79     }
80 
81     public static void main(String[] args) {
82         HttpClientHttpGet.httpGetRequest();
83     }
84 
85 }

6、如何获取网上的一张图片,然后保存到本地的操作,代码如下所示:

代码语言:javascript
复制
 1 package com.bie.httpClient.getImage;
 2 
 3 import java.io.File;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 
 7 import org.apache.commons.io.FileUtils;
 8 import org.apache.http.Header;
 9 import org.apache.http.HttpEntity;
10 import org.apache.http.ParseException;
11 import org.apache.http.StatusLine;
12 import org.apache.http.client.ClientProtocolException;
13 import org.apache.http.client.methods.CloseableHttpResponse;
14 import org.apache.http.client.methods.HttpGet;
15 import org.apache.http.impl.client.CloseableHttpClient;
16 import org.apache.http.impl.client.HttpClients;
17 
18 /**
19  * 
20  * @author
21  *
22  */
23 public class HttpClientGetImage {
24 
25     // 设置请求头消息 User-Agent 模拟浏览器
26     private static String UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0";
27 
28     /**
29      * HttpGet请求操作
30      */
31     public static void httpGetRequest() {
32         // 第一步,获取到httpClient客户端实例,获取到一个可关闭的httpClient客户端实例。
33         CloseableHttpClient httpClient = HttpClients.createDefault();
34         // 第二步,创建HttpGet或者HttpPost实例。
35         String uri = "https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=179511720,320422354&fm=26&gp=0.jpg";
36         HttpGet httpGet = new HttpGet(uri);
37         // 设置请求头消息 User-Agent 模拟浏览器
38         httpGet.setHeader("User-Agent", UserAgent);
39 
40         // 定义一个可响应的实例对象。
41         CloseableHttpResponse response = null;
42         try {
43             // 第三步,发布一个请求,使用httpClient实例发送一个http协议的Get请求。
44             response = httpClient.execute(httpGet);
45             // 获取到响应的状态
46             StatusLine statusLine = response.getStatusLine();
47             System.out.println("响应状态: " + statusLine.toString() + ", 响应码: " + statusLine.getStatusCode());
48         } catch (ClientProtocolException e) {
49             // http协议异常
50             e.printStackTrace();
51         } catch (IOException e) {
52             // io异常
53             e.printStackTrace();
54         }
55         // 第四步,获取到返回的实体对象
56         HttpEntity entity = response.getEntity();
57         // 获取响应内容类型 Content-Type,获取到响应类型,从而过滤一些不想要的东西
58         Header contentType = entity.getContentType();
59         // 打印响应信息
60         System.out.println("name : " + contentType.getName() + " , value: " + contentType.getValue());
61 
62         // 将返回结果转换为字符串进行查看(网页内容),参数一是请求返回的entity,参数二是字符集编码
63         String result = null;
64         try {
65             // 判断entity是否为空
66             if (entity != null) {
67                 InputStream content = entity.getContent();
68                 // 将下载的内容拷贝到指定的文件夹下面
69                 File file = new File("F:\\" + "hashiqi.jpg");
70                 FileUtils.copyToFile(content, file);
71                 System.out.println("--------------------------------执行成功--------------------------------");
72             }
73         } catch (ParseException e) {
74             e.printStackTrace();
75         } catch (IOException e) {
76             e.printStackTrace();
77         }
78         // 第五步,关闭流,释放资源
79         try {
80             response.close();
81             httpClient.close();
82         } catch (IOException e) {
83             e.printStackTrace();
84         }
85     }
86 
87     public static void main(String[] args) {
88         HttpClientGetImage.httpGetRequest();
89     }
90 
91 }

7、httpClient使用代理ip,在爬取网页的时候,有的目标站点有反爬虫机制,对于频繁访问站点以及规则性访问站点的行为,会采取屏蔽ip的措施,这时候使用代理Ip就有大用处了。代理ip分为透明代理,匿名代理,混淆代理,高匿代理。

  1)、透明代理(Transparent Proxy),透明代理虽然可以直接“隐藏”你的IP地址,但是还是可以从HTTP_X_FORWARDED_FOR来查到你是谁。   2)、匿名代理(Anonymous Proxy),匿名代理比透明代理进步了一点:别人只能知道你用了代理,无法知道你是谁。   3)、混淆代理(Distorting Proxies),与匿名代理相同,如果使用了混淆代理,别人还是能知道你在用代理,但是会得到一个假的IP地址,找不到你。   4)、高匿代理(Elite proxy或High Anonymity Proxy),可以看出来,高匿代理让别人根本无法发现你是在用代理,所以是最好的选择。

代理IP :http://www.66ip.cn/index.html,更多的可以百度。

代码语言:javascript
复制
 1 package com.bie.httpClient.ip;
 2 
 3 import java.io.IOException;
 4 
 5 import org.apache.http.Header;
 6 import org.apache.http.HttpEntity;
 7 import org.apache.http.HttpHost;
 8 import org.apache.http.ParseException;
 9 import org.apache.http.StatusLine;
10 import org.apache.http.client.ClientProtocolException;
11 import org.apache.http.client.config.RequestConfig;
12 import org.apache.http.client.methods.CloseableHttpResponse;
13 import org.apache.http.client.methods.HttpGet;
14 import org.apache.http.impl.client.CloseableHttpClient;
15 import org.apache.http.impl.client.HttpClients;
16 import org.apache.http.util.EntityUtils;
17 
18 /**
19  * 
20  * @author
21  *
22  */
23 public class HttpClientProxyIp {
24 
25     // 设置请求头消息 User-Agent 模拟浏览器
26     private static String UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0";
27 
28     /**
29      * HttpGet请求操作
30      */
31     public static void httpGetRequest() {
32         // 第一步,获取到httpClient客户端实例,获取到一个可关闭的httpClient客户端实例。
33         CloseableHttpClient httpClient = HttpClients.createDefault();
34         // 第二步,创建HttpGet或者HttpPost实例。
35         String uri = "http://www.baidu.com/";
36         HttpGet httpGet = new HttpGet(uri);
37         // 设置请求头消息 User-Agent 模拟浏览器
38         httpGet.setHeader("User-Agent", UserAgent);
39 
40         // 设置ip代理,这里设置高匿代理
41         HttpHost proxy = new HttpHost("183.195.106.118", 8118);
42         RequestConfig config = RequestConfig.custom().setProxy(proxy).build();
43         httpGet.setConfig(config);
44 
45         // 定义一个可响应的实例对象。
46         CloseableHttpResponse response = null;
47         try {
48             // 第三步,发布一个请求,使用httpClient实例发送一个http协议的Get请求。
49             response = httpClient.execute(httpGet);
50             // 获取到响应的状态
51             StatusLine statusLine = response.getStatusLine();
52             System.out.println("响应状态: " + statusLine.toString() + ", 响应码: " + statusLine.getStatusCode());
53         } catch (ClientProtocolException e) {
54             // http协议异常
55             e.printStackTrace();
56         } catch (IOException e) {
57             // io异常
58             e.printStackTrace();
59         }
60         // 第四步,获取到返回的实体对象
61         HttpEntity entity = response.getEntity();
62         // 获取响应内容类型 Content-Type,获取到响应类型,从而过滤一些不想要的东西
63         Header contentType = entity.getContentType();
64         // 打印响应信息
65         System.out.println("name : " + contentType.getName() + " , value: " + contentType.getValue());
66 
67         // 将返回结果转换为字符串进行查看(网页内容),参数一是请求返回的entity,参数二是字符集编码
68         String result = null;
69         try {
70             result = EntityUtils.toString(entity, "UTF-8");
71         } catch (ParseException e) {
72             e.printStackTrace();
73         } catch (IOException e) {
74             e.printStackTrace();
75         }
76         // 打印请求返回的结果
77         System.out.println(result.toString());
78 
79         // 第五步,关闭流,释放资源
80         try {
81             response.close();
82             httpClient.close();
83         } catch (IOException e) {
84             e.printStackTrace();
85         }
86     }
87 
88     public static void main(String[] args) {
89         System.out.println(System.currentTimeMillis());
90         HttpClientProxyIp.httpGetRequest();
91         System.out.println(System.currentTimeMillis());
92     }
93 
94 }

8、HttpClient连接超时及读取超时问题,httpClient在执行具体http请求时候 有一个连接的时间和读取内容的时间。

  1)、HttpClient连接时间,所谓连接的时间,是指HttpClient发送请求的地方开始到连接上目标url主机地址的时间,理论上是距离越短越快。

  2)、HttpClient读取时间,所谓读取的时间,是指HttpClient已经连接到了目标服务器,然后进行内容数据的获取,一般情况 读取数据都是很快速的,但是假如读取的数据量大,或者是目标服务器本身的问题(比如读取数据库速度慢,并发量大等等)也会影响读取时间。

代码语言:javascript
复制
 1 package com.bie.httpClient.timeout;
 2 
 3 import java.io.IOException;
 4 
 5 import org.apache.http.Header;
 6 import org.apache.http.HttpEntity;
 7 import org.apache.http.ParseException;
 8 import org.apache.http.StatusLine;
 9 import org.apache.http.client.ClientProtocolException;
10 import org.apache.http.client.config.RequestConfig;
11 import org.apache.http.client.methods.CloseableHttpResponse;
12 import org.apache.http.client.methods.HttpGet;
13 import org.apache.http.impl.client.CloseableHttpClient;
14 import org.apache.http.impl.client.HttpClients;
15 import org.apache.http.util.EntityUtils;
16 
17 /**
18  * 
19  * @author
20  *
21  */
22 public class HttpClientTimeOut {
23 
24     // 设置请求头消息 User-Agent 模拟浏览器
25     private static String UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0";
26 
27     /**
28      * HttpGet请求操作
29      */
30     public static void httpGetRequest() {
31         // 第一步,获取到httpClient客户端实例,获取到一个可关闭的httpClient客户端实例。
32         CloseableHttpClient httpClient = HttpClients.createDefault();
33         // 第二步,创建HttpGet或者HttpPost实例。
34         String uri = "https://www.baidu.com/";
35         HttpGet httpGet = new HttpGet(uri);
36         // 设置请求头消息 User-Agent 模拟浏览器
37         httpGet.setHeader("User-Agent", UserAgent);
38 
39         // HttpClient提供了一个RequestConfig类,专门用于配置参数比如连接时间、读取时间、代理IP等。
40         RequestConfig config = RequestConfig
41                 .custom()
42                 .setConnectTimeout(5000) // 设置连接时间5秒钟
43                 .setSocketTimeout(5000) // 设置响应时间5秒钟
44                 .build();
45         httpGet.setConfig(config);
46 
47         // 定义一个可响应的实例对象。
48         CloseableHttpResponse response = null;
49         try {
50             // 第三步,发布一个请求,使用httpClient实例发送一个http协议的Get请求。
51             response = httpClient.execute(httpGet);
52             // 获取到响应的状态
53             StatusLine statusLine = response.getStatusLine();
54             System.out.println("响应状态: " + statusLine.toString() + ", 响应码: " + statusLine.getStatusCode());
55         } catch (ClientProtocolException e) {
56             // http协议异常
57             e.printStackTrace();
58         } catch (IOException e) {
59             // io异常
60             e.printStackTrace();
61         }
62         // 第四步,获取到返回的实体对象
63         HttpEntity entity = response.getEntity();
64         
65         // 获取响应内容类型 Content-Type,获取到响应类型,从而过滤一些不想要的东西
66         Header contentType = entity.getContentType();
67         // 打印响应信息
68         System.out.println("name : " + contentType.getName() + " , value: " + contentType.getValue());
69         
70         // 将返回结果转换为字符串进行查看(网页内容),参数一是请求返回的entity,参数二是字符集编码
71         String result = null;
72         try {
73             result = EntityUtils.toString(entity, "UTF-8");
74         } catch (ParseException e) {
75             e.printStackTrace();
76         } catch (IOException e) {
77             e.printStackTrace();
78         }
79         // 打印请求返回的结果
80         System.out.println(result.toString());
81 
82         // 第五步,关闭流,释放资源
83         try {
84             response.close();
85             httpClient.close();
86         } catch (IOException e) {
87             e.printStackTrace();
88         }
89     }
90 
91     public static void main(String[] args) {
92         HttpClientTimeOut.httpGetRequest();
93     }
94 
95 }

9、可以使用httpPost请求来模拟表单请求操作,非常适合于接口测试,当然也有很多工具来进行接口测试,比如Postman等等,如下所示:

代码语言:javascript
复制
 1 package com.bie.httpClient.httpPost;
 2 
 3 import java.io.IOException;
 4 import java.util.ArrayList;
 5 import java.util.List;
 6 
 7 import org.apache.http.HttpEntity;
 8 import org.apache.http.NameValuePair;
 9 import org.apache.http.ParseException;
10 import org.apache.http.client.ClientProtocolException;
11 import org.apache.http.client.entity.UrlEncodedFormEntity;
12 import org.apache.http.client.methods.CloseableHttpResponse;
13 import org.apache.http.client.methods.HttpPost;
14 import org.apache.http.impl.client.CloseableHttpClient;
15 import org.apache.http.impl.client.HttpClients;
16 import org.apache.http.message.BasicNameValuePair;
17 import org.apache.http.util.EntityUtils;
18 
19 /**
20  * 
21  * @author
22  *
23  */
24 public class HttpClientHttpPost {
25 
26     /**
27      * HttpGet请求操作
28      */
29     public static void httpGetRequest() {
30         // 获取到开始时间
31         long startTime = System.currentTimeMillis();
32         // 第一步,获取到httpClient客户端实例,获取到一个可关闭的httpClient客户端实例。
33         CloseableHttpClient httpClient = HttpClients.createDefault();
34         // 第二步,创建HttpGet或者HttpPost实例。
35         String uri = "http://127.0.0.1:8080/login";
36         HttpPost httpPost = new HttpPost(uri);
37         // 定义一个可响应的实例对象。
38         CloseableHttpResponse response = null;
39         try {
40             // 定义一个List集合用于保存表单请求数据
41             List<NameValuePair> list = new ArrayList<NameValuePair>();
42             list.add(new BasicNameValuePair("userName", "admin"));
43             list.add(new BasicNameValuePair("password", "123456"));
44 
45             // 定义一个表单实体对象,设置字符集编码为utf-8
46             UrlEncodedFormEntity uefEntity = uefEntity = new UrlEncodedFormEntity(list, "UTF-8");
47             // 将实体对象设置到httpPost请求对象中
48             httpPost.setEntity(uefEntity);
49             System.out.println("executing request " + httpPost.getURI());
50 
51             // 第三步,发布一个请求,使用httpClient实例发送一个http协议的Get请求。
52             response = httpClient.execute(httpPost);
53         } catch (ClientProtocolException e) {
54             // http协议异常
55             e.printStackTrace();
56         } catch (IOException e) {
57             // io异常
58             e.printStackTrace();
59         }
60         // 第四步,获取到返回的实体对象
61         HttpEntity entity = response.getEntity();
62         // 将返回结果转换为字符串进行查看(网页内容),参数一是请求返回的entity,参数二是字符集编码
63         String result = null;
64         try {
65             if (entity != null) {
66                 result = EntityUtils.toString(entity, "UTF-8");
67             }
68         } catch (ParseException e) {
69             e.printStackTrace();
70         } catch (IOException e) {
71             e.printStackTrace();
72         }
73         // 打印请求返回的结果
74         System.out.println(result.toString());
75 
76         long endTime = System.currentTimeMillis();
77         System.out.println("程序运行时间: " + (endTime - startTime) + "ms");
78 
79         // 第五步,关闭流,释放资源
80         try {
81             response.close();
82             httpClient.close();
83         } catch (IOException e) {
84             e.printStackTrace();
85         }
86     }
87 
88     public static void main(String[] args) {
89         HttpClientHttpPost.httpGetRequest();
90     }
91 
92 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档