HttpClient使用指南——POST请求
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 方可获取到文件,示例代码如下: