0、特别说明
1、声明:如需转载,请注明来自 http://cgs1999.iteye.com/;
2、
阅读本文前建议先阅读下面博客:
使用HttpClient4实现API测试实战(1)
1、引言
API测试过程中,有些API接口可能需要上传附件,而且是多个附件,本文主要是解决API测试过程中的多附件上传问题。
当然,你也可以将本文当作
使用HttpClient模拟HTTP实现多附件上传的文章来阅读。
2、更新测试项目
2.1 添加项目依赖
httpmime-4.2.1.jar
2.2 修改HttpClient帮助类HttpClientUtil
添加下面方法
public static String doPostUpload(String url, List<BasicNameValuePair> datas, List<String> files) {
try {
// 组装提交信息
MultipartEntity reqEntity = new MultipartEntity();
for(BasicNameValuePair data : datas) {
reqEntity.addPart(data.getName(), new StringBody(data.getValue(), "text/plain", Charset.forName("UTF-8")));
}
for(String file : files) {
reqEntity.addPart("file", new FileBody(new File(file)));
}
// 设置提交信息
HttpPost httppost = new HttpPost(url);
httppost.setEntity(reqEntity);
HttpResponse httpResponse = httpClient.execute(httppost);
// 若状态码为200 ok
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 取出回应字串
String strResult = EntityUtils.toString(httpResponse.getEntity());
System.out.println("doPostJson response[" + url + "]: \n" + strResult);
return strResult;
} else {
System.out.println("doPost Error Response[" + url + "]: \n" + httpResponse.getStatusLine().toString());
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
2.3 修改API帮助类ApiUtil
增加多附件测试方法
// 发布带附件信息
public static boolean uploadMessage(String status, List<String> files) {
return uploadMessage(status, null, files);
}
public static boolean uploadMessage(String status, String groupId, List<String> files) {
List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>(0);
params.add(new BasicNameValuePair("account_token", getToken()));
params.add(new BasicNameValuePair("status", status));
if(groupId!=null) {
params.add(new BasicNameValuePair("group_id", groupId));
}
String xml = HttpClientUtil.doPostUpload(API_URL + "/messages/upload", params, files);
if (!hasText(xml)) {
return false;
}
if (xml.indexOf("errorCode") == -1) {
return true;
} else {
return false;
}
}
2.4 修改ApiUtil中的测试方法
修改后的测试代码如下
public static void main(String[] argus) {
login("chengesheng@gmail.com", "password");
List<String> files = new ArrayList<String> (0);
files.add("c:\\myimage.jpg");
files.add("c:\\dulala.txt");
uploadMessage("测试附件和图片上传1", "151", files);
}
2.5 运行测试
运行测试代码,带附件信息发布成功;
3、参考资料
[1] HttpClient中官方范例
examples\org\apache\http\examples\entity\mime\ClientMultipartFormPost.java
[2] http://evgeny-goldin.com/blog/uploading-files-multipart-post-apache/
[3] http://blog.csdn.net/fengjia10/article/details/7315279
分享到:
相关推荐
WebApi系列-通过HttpClient来调用WebApi接口.doc
全栈自动化测试实战 基于testng,httpclient,selenium.appium 书本上的东西
httpclient-4.5.3 api 中文版
httpclient4.5的中文帮助文档,可以帮助学习httpclient,利用httpclient采集网络数据,解决采集时遇到的问题
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,...本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。
包含翻译后的API文档:httpclient-4.5.5-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.apache.httpcomponents,artifactId:httpclient,version:4.5.5 使用方法:解压翻译后的API文档,用...
本教程是继使用HttpClient调用Web API只有的补充教程,主要讲解了如何在WPF中异步调用Web API且不阻塞主线程。
httpclient 4.5 api文档
httpclient 4.5.3 API doc httpclient4.5.3.chm 纯网站镜像
由网上博客整理而成的PDF。该PDF是关于HttpClient4.5-API进行部分翻译,我觉得翻译的很不错,就整理下来留存一份。原博客地址:http://blog.csdn.net/u011179993/article/details/47123727 侵删。谢谢。
httpclient4.1.4 最新API
httpclient testgn 接口测试
HttpClient4.2.3英文API
包含翻译后的API文档:httpclient-4.5.2-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.apache.httpcomponents,artifactId:httpclient,version:4.5.2 使用方法:解压翻译后的API文档,用...
包含翻译后的API文档:httpclient-4.5.5-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org.apache.httpcomponents,artifactId:httpclient,version:4.5.5 使用方法:解压翻译后的API...
赠送jar包:httpclient-4.5.6.jar; 赠送原API文档:httpclient-4.5.6-javadoc.jar; 赠送源代码:httpclient-4.5.6-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.6.pom; 包含翻译后的API文档:httpclient...
使用HttpClient4.5实现https请求忽略SSL证书验证工具类
基于jmeter+Java+HttpclientUtil实现的接口测试工具,通过Excel表格进行维护接口相关参数信息,借助Jmeter工具通过java请求设计接口测试自动化测试用例。代码重写了JavaSampleClient类,在使用过程中取出了冗余的...
复制进eclipse即可用。main方法测试