使用httpclient 4.3发送post请求
单一类型的参数
示例:
1 |
|
大致步骤:
- 构造HttpPost实例,参数是请求地址
- 添加一些基本的head,比如字符集之类的
- 添加参数
HttpClient 框架将请求参数封装在HttpEntity
接口中, 常用的有StringEntity
、UrlEncodedFormEntity
、FileEntity
、InputStreamEntity
等。
StringEntity
可以用来构造字符串类型的参数。内部使用了一个数组来保存数据。
比如构造一个表单application/x-www-form-urlencoded
:”a=1&b=2”。当然UrlEncodedFormEntity
进一步做了封装,用来构造表单。再如发送json格式的参数,需要将json转成String。
UrlEncodedFormEntity
继承自StringEntity
。对StringEntity
做了进一步的封装,构造函数中使用集合来作为参数,避免了参数的拼接,并且设置了Content-Type=application/x-www-form-urlencoded
.
FileEntity
将文件作为参数发送到服务端。
构造函数中使用一个file来接收本地文件。
InputStreamEntity
将流作为参数发送到服务端。可以是文件流,以及byte array 等其他形式的流,只要服务端能解析即可。
多种类型的参数
如果你的参数中既有文件,又有普通的字符参数,上述方式就无法满足了。
这个时候需要使用MultipartFormEntity
,但是无法直接使用,需要用到MultipartEntityBuilder
来构建。
示例:
1 | MultipartEntityBuilder multiEntity = MultipartEntityBuilder.create(); |
我这里添加了一个流参数用来上传文件,一个字符串参数。有时候我们上传的文件是来自网络的,那就需要使用流了。如果是使用本地文件,则可以使用FileBody
。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 水娃火娃石榴娃!
评论