Http客户端工具
文章目录 |
---|
Maven打包Jar + Http向Url发送Get请求_lijiamin-的CSDN博客 |
前段时间,我写了一个非常简陋的Get请求的代码用于刷CSDN的访客量,但是那个玩意并不能用于实际工作中,因为它里面并没有包含什么其他的参数,只是简简单单的发起请求,但是在这几天的工作中,我有幸接触到了这篇代码,现将它刨析一番并分享给大家
用途及分析
顾名思义,是一个HTTP客户端工具,能通过代码方式发起get、post、put、delete请求,里面有如下几个方法
- 连接池初始化
- 连接保活(长连接)
- SSL绕过验证
- 请求创建
- 执行请求(GET\POST\PUT\DELETE)
关于请求,我们需要同时考虑到HTTP/HTTPS的情况,HTTPS采用了SSL的安全加密
初始化的客户端,里面的传入实例defaultStrategy是HTTP长连接的配置
接下来开始创建请求
请求的执行我不太想写了,我去整其他东西了,完整的代码在下面
完整的代码段
使用方式
HttpClientPoolUtil.post(完整的请求地址, JSON字符串的请求数据, 请求头);
实际案例代码
public static void main(String[] args) throws Exception {
String file = "D:\\Weather-local.txt";
FileWriter fw = new FileWriter(file, true);
while (true) {
// 请求
Map map = new HashMap<String, Object>();
map.put("accept", "*/*");
map.put("connection", "Keep-Alive");
map.put("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
map.put("Content-Type", "application/json;charset=utf-8");
String strRes = HttpClientPoolUtil.get("http://t.weather.itboy.net/api/weather/city/101280601", map);
// 写处理
fw.append("当前时间:" + new Date() + "_____________" + strRes);
fw.append("\n");
fw.append("\n");
fw.flush();
System.out.println(new Date() + "----ok");
Thread.sleep(900000);
}
}
原始代码
import org.apache.http.HeaderElement;
import org.apache.http.HeaderElementIterator;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.*;
import org.apache.http.client.protocol.HttpClientContext;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.ConnectionKeepAliveStrategy;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apach