如何使用HttpClient

如何使用HttpClient,第1张

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. 释放连接。无论执行方法是否成功,都必须释放连接

1.创建一个请求客户端:HttpClients.createDefault(),用来实际发起调用post请求,可以类比成浏览器。

2.组装表单请求数据:因需要传递文件,所以通过 MultipartEntityBuilder 构造器组装表单实体请求数据。

2.1 设置mode为 HttpMultipartMode.RFC6532 (必须);

2.2 设置字符集为UTF-8(必须);

2.3 通过 addBinaryBody 追加文件;

2.4 通过 addTextBody 追加文本参数,若文本为中文则必须指定字符集为GBK或者UTF-8。

3.创建一个post请求:通过请求构造器 RequestBuilder 的post方法构造一个post请求,通过 setEntity 方法向post请求里放置请求参数,通过addHeader方法向post请求里追加请求头信息,请求头信息比如双方约定的token,通过build方法返回请求对象。

4.发起post请求并获得响应:通过请求客户端的execute方法执行请求并获得返回值请求响应。

5.获取响应结果:获取响应对象的实体HttpEntity,通过 EntityUtils toString 方法将实体转成字符串,这里一般还要指定字符集,尤其是当实体里没有指定字符集时。

注意 MultipartEntityBuilder 必须指定 mode HttpMultipartMode.RFC6532 ,且必须设置字符集为 UTF-8 否则若传递的文件名包含中文,则 文件名乱码 ;对于普通的文本参数,中文指定UTF-8或者GBK接收方均未发现乱码情况; 接收方 需要将请求转为 MultipartHttpServetRequest 方可获取到文件,示例代码如下:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/11292043.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存