接口测试之上传文件
来源:互联网 发布:java 获取对象大小 编辑:程序博客网 时间:2024/06/16 22:34
httpClient4.3之后上传文件使用MultipartEntityBuilder
- 设置上传模式setMode(),其中mode主要有BROWSER_COMPATIBLE,RFC6532,STRICT三种,默认值是STRICT。
创建MultipartEntityBuilder对象,并添加需要上传的数据:利用MultipartEntityBuilder.create()来创建对象; addBinaryBody:以二进制的形式添加数据,可以添加File、InputStream、byte[]类型的数据。addBinaryBody(String name, File file, ContentType contentType, String filename)
addBinaryBody(String name, InputStream stream, ContentType contentType, String filename) addTextBody:添加文本数据
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字段。
接口测试之文件上传——MultipartEntityBuilder - fengchao - fengchao2468的博客
3. 然后是利用build()方法创建一个HttpEntity对象;
最后将HttpEntity对象添加到指定的URL上,采用HttpPost的setEntity的方法;
最后的最后,就是调用HttpClient对象发送请求,并获取服务器的响应
6.具体代码
HttpPost httppost = new HttpPost(url);final HttpEntity entity = makeMultipartEntity(params, files);httppost.addHeader(entity.getContentType());//httppost.addHeader(entity.getContentEncoding()); //nullhttppost.setEntity(entity);HttpResponse response = getHttpClient().execute(httppost);private static HttpClient mClient;private static HttpClient getHttpClient() {
if(mClient == null) { //if(Build.VERSION.SDK_INT >= 9); //将不走本类的Case,基于HttpURLConnection if(Build.VERSION.SDK_INT >= 8) { mClient = AndroidHttpClient.newInstance(getUserAgent()); }else { mClient = new DefaultHttpClient(); }}return mClient;
}`
public static HttpEntity makeMultipartEntity(List<NameValuePair> params, final Map<String, File> files) { MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); //如果有SocketTimeoutException等情况,可修改这个枚举 //builder.setCharset(Charset.forName("UTF-8")); //不要用这个,会导致服务端接收不到参数 if (params != null && params.size() > 0) { for (NameValuePair p : params) { builder.addTextBody(p.getName(), p.getValue(), ContentType.TEXT_PLAIN.withCharset("UTF-8")); } } if (files != null && files.size() > 0) { Set<Entry<String, File>> entries = files.entrySet(); for (Entry<String, File> entry : entries) { builder.addPart(entry.getKey(), new FileBody(entry.getValue())); } } return builder.build();}
0 0
- 接口测试之上传文件
- 【SoapUI】接口测试之post上传文件方法思路
- curl 测试上传接口,上传图片文件!
- Fiddler小技巧-测试上传文件接口
- WebDriver键盘事件测试之文件上传
- Java开发之文件上传 (未测试)
- 安全测试之文件上传攻击
- robot framework使用接口框架进行接口测试之图片上传接口
- jersey 上传文件接口
- php文件上传接口
- Jmeter接口测试(附件上传)
- Jmeter接口测试(附件上传)
- 微信接口java之--上传多媒体文件
- 测试上传文件
- PHP文件上传测试
- 上传文件测试
- postman测试文件上传
- 服务端文件上传测试
- Lucene学习笔记
- 字体及颜色
- 复杂listView
- MySQL命令mysqldump:备份数据库
- linux内核中断原理博文记录
- 接口测试之上传文件
- H5 选项卡—三级菜单联动
- Linux下Wget获取云盘资源
- 我看小程序:连接一切的背后,是打群架时代的开始
- ALG:应用层网关(防火墙)
- quartz 2.2.3 自带示例源码解读example6~example10
- linux mysql-bin.000001占用磁盘空间过大解决方法
- 学习《第一行代码》之实战项目-天气预报API实例
- wpf之一:基础概念