接口测试之文件上传—MultipartEntityBuilder

发表于:2016-4-08 10:02

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:fengchao    来源:51Testing软件测试网采编

  在HttpCient4.3之后上传文件主要使用的类是位于org.apache.http.entity.mime下的MultipartEntityBuilder(原先的MultipartEntity已经基本弃用了)。
  1.首先是设置上传的模式;
  setMode(HttpMultipartMode mode),其中mode主要有BROWSER_COMPATIBLE,RFC6532,STRICT三种,默认值是STRICT。
  2.其次是创建MultipartEntityBuilder对象,并添加需要上传的数据;
  a.利用MultipartEntityBuilder.create()来创建对象;
  b.addBinaryBody:以二进制的形式添加数据,可以添加File、InputStream、byte[]类型的数据。
  addBinaryBody(String name, File file, ContentType contentType, String filename)
  addBinaryBody(String name, InputStream stream, ContentType contentType, String filename)
  addBinaryBody(String name, byte[] b, ContentType contentType, String filename)
  c.addTextBody:添加文本数据
  addTextBody(String name, String text, ContentType contentType)
  d.addPart:以Key/Value的形式添加ContentBody类型的数据
  addPart(String name, ContentBody contentBody)
  更多函数可以参考:https://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntityBuilder.html。在GACHA API中,主要是上传图片,所以在测试中选用了addBinaryBody。其中,第一个参数name的值,是服务器已经定义好的,服务器会根据这个字段来读取我们上传的文件流,不匹配则会报错。关于contentType,可以参考:http://tool.oschina.net/commons,不同文件扩展名所对应的类型。而file/stream和fileName,就是我们所要上传文件的信息。当用浏览器的开发者工具查看API请求时,我们会看到这些/参数基本位于API请求中的 Request Payload字段。
  3.然后是利用build()方法创建一个HttpEntity对象;
  4.最后将HttpEntity对象添加到指定的URL上,采用HttpPost的setEntity的方法;
  5.最后的最后,就是调用HttpClient对象发送请求,并获取服务器的响应

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号