HTTPClient to use http/https protocol to send request
使用了spring boot, gradle, commons-httpcomponent3.
目前httpclient 已经有了版本4.
https://github.com/lvfe/httpClient
https://github.com/lvfe/httpclient3
HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性
使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。
1. 创建HttpClient对象。
2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
6. 释放连接。无论执行方法是否成功,都必须释放连接
PostMethod postMethod = new PostMethod(postUrl);
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams()
.setConnectionTimeout(50000);// 设置连接时间
client.getHttpConnectionManager().getParams()
.setHeader('Content-Type', 'application/json');// 设置连接时间
int status = client.executeMethod(postMethod);
if (status == HttpStatus.SC_OK) {
InputStream inputStream = postMethod.setResponseBody(String aaa); BufferedReader br = new BufferedReader(new InputStreamReader( inputStream)); StringBuffer stringBuffer = new StringBuffer();
}
//finally
inputStream.close()
br.close();
postMethod.releaseConnection();
一些要考虑的
1.要set header content-type
2.在post方法中,Httpclient3,传递值为json对象时, 需要把json转成string, getRequestBody(String aa) 已经deprecate了,这时候可以设成getRequestEntity(requestEntity);
requestEntity可以用ByteRequestEntity。文档中有写出替代方法。deprecate的方法最好不要用,防止以后有production issue
3.工程化中,我们希望有清晰的异常处理,返回给用户;不要单单返回500;超时信息放在类上私有变量。
4.gradle build可以设置build task jar.部署用java -jar xxx.jar
5. java可以一个模块一个模块写完
HTTPClient to use http/https protocol to send request的更多相关文章
- 使用HttpClient连接池进行https单双向验证
https单双向验证环境的搭建参见:http://www.cnblogs.com/YDDMAX/p/5368404.html 一.单向握手 示例程序: package com.ydd.study.he ...
- HttpClient(4.3.5) - HTTP Protocol Interceptors
The HTTP protocol interceptor is a routine that implements a specific aspect of the HTTP protocol. U ...
- HttpClient 发送 HTTP、HTTPS 请求的简单封装
import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; import org.apache.http.Http ...
- HttpClient配置SSL绕过https证书
https://blog.csdn.net/irokay/article/details/78801307 HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多.最重要的 ...
- HttpClient 发送 HTTP、HTTPS
首先说一下该类中需要引入的 jar 包,apache 的 httpclient 包,版本号为 4.5,如有需要的话,可以引一下. 代码 import org.apache.commons.io ...
- 【Https异常】This request has been blocked; the content must be served over HTTPS
一.问题出现场景 项目从http升级到https后,jsp页面存在发送http请求的情况下就会出现该异常.因为HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 ...
- java HttpClient 忽略证书的信任的实现 MySSLProtocolSocketFactory
当不需要任何证书访问https时,java中先实现一个MySSLProtocolSocketFactory类忽略证书的信任 package com.tgb.mq.producer.utils; imp ...
- Java11新特性!
Java11又出新版本了,我还在Java8上停着.不过这也挡不住我对他的热爱,忍不住查看了一下他的新性能,由于自己知识有限,只总结了以下八个特性: 1.本地变量类型推断 什么是局部变量类型推断? va ...
- java 11 标准Java异步HTTP客户端
这是 Java 9 开始引入的一个处理 HTTP 请求的的 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在 java.net 包中找到 ...
随机推荐
- 在写WebApi判断用户权限时返回数据和接受支付结果 定义返回数据类型
using ADT.Core.Encrypt; using System; using System.Collections.Generic; using System.Linq; using Sys ...
- day1.接口测试(概念、Postman、SoapUI、jmeter)
一.什么是接口测试 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑 ...
- Python数据类型的内置函数之str(字符串)
Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) str(字符串)的一些操作 - 字符串相连方法 # 字符串的 ...
- redis过期机制(官网文档总结)
官网地址:https://redis.io/commands/expire redis过期定义如下: Set a timeout on key. After the timeout has expir ...
- tensorflow/threading 用到的一些函数
---恢复内容开始--- import tensorflow as tf 1 tf.squeeze([1,2,3,4]) 删除所有为1的维度 eg shape从(1,2,3,1)到(2,3 ...
- C++实现串口的自动识别
1.首先需要遍历注册表得到所有可用的串口 将得到的每一个串口保存到向量vector中,代码如下: // 得到所有的串口号 vector<string> cnComm::getComPort ...
- 初识Git->GitHub
这不是一篇教程,这是学习过程的一个记录,初次使用GitHub的小白请移步文章末尾的参考链接, 先了解Git是什么东西 Git的工作流程 操作Git 练习使用 边用边学 #--------------- ...
- django 加载css、js和图片记载不上
在django的setting里加以下配置 STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), 'Djago/static/',)
- redis bind的坑
启动redis时,发现外网访问不了 检查以下方面 1. ping redis 的ip 2. 检查防火墙端口是否开放3. bind bind bind指的是绑定哪个ip可以访问 bind 要填写你自己r ...
- if、for、while的详解及实例(一)
实例一:猜字谜a = 1i = 0while a != 20: a = int (input ('请输入你猜的数字:')) i += 1 print(i) if a == 20: if i<3: ...