`
cgs1999
  • 浏览: 537226 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用HttpClient4实现API测试实战(2)——多附件上传

    博客分类:
  • J2EE
阅读更多
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


0
4
分享到:
评论

相关推荐

    全栈自动化测试实战 基于testng,httpclient,selenium.appium

    Appium结合了WebDriver协议,使得开发者可以使用相同的API来控制移动端的应用,大大简化了跨平台测试的复杂度。 在本书的源代码中,"httpinterface-0.0.1-SNAPSHOT"很可能是一个Maven项目的构建版本,可能包含了...

    WebApi系列-通过HttpClient来调用WebApi接口.doc

    ### WebApi系列-通过HttpClient来调用WebApi接口 #### 一、概述 在现代Web开发中,Web API已经成为一种非常流行的模式,用于提供服务端与客户端之间的数据交互。随着.NET Framework以及.NET Core的发展,微软提供...

    httpclient4中文API和使用

    `httpClient笔记.docx`可能是用户或教程作者整理的关于使用HttpClient的笔记或实战案例,可能包括一些常见问题的解决方案,比如处理重定向、处理cookies、上传下载文件、使用HTTPS等。 学习HttpClient时,除了API...

    如何在WPF应用程序中通过HttpClient调用Web API

    在WPF(Windows Presentation Foundation)应用程序中,使用HttpClient调用Web API是一项常见的任务,尤其是在进行数据交互时。本文将深入探讨如何在WPF应用中利用HttpClient进行异步操作,以避免阻塞主线程,提高...

    httpclient-4.5.3 api 中文版

    HttpClient 4.5.3的文档(API中文版)将详细介绍以上及更多功能,帮助开发者深入理解和使用这个库,创建高效、可靠的HTTP客户端应用程序。通过熟练掌握HttpClient,开发者可以构建出适应各种网络环境和需求的高质量...

    httpClient调用javaeye API验证用户

    在这个场景中,我们使用HttpClient来调用JavaEye API来验证用户。JavaEye可能是一个提供用户认证服务的平台,而API则提供了验证用户身份的功能。 以下是一个关于如何使用HttpClient调用JavaEye API的基本步骤: 1....

    Httpclient+testng接口测试小例子

    在"Httpclient+testng接口测试小例子"中,我们将使用以下步骤进行接口测试: 1. **环境准备**:首先,确保项目中已经添加了Apache HttpClient和TestNG的依赖。这些通常通过Maven或Gradle等构建工具进行管理,通过在...

    httpclient-4.5.3官方API中文文档_最新译版_2886K

    本文将基于4.5.3版本的HttpClient官方API中文文档,深入探讨其核心概念、使用方法及常见应用场景。 一、HttpClient简介 HttpClient是一款高效的HTTP客户端库,它支持多种HTTP标准,包括HTTP/1.1、HTTP/2以及...

    四、使用HttpClient上传测试文件服务器

    本篇文章将详细讲解如何利用HttpClient上传文件到测试服务器,这在进行API测试、自动化测试或者集成测试时非常有用。我们先来理解一下HttpClient的基本概念,然后逐步探讨文件上传的步骤。 HttpClient是由Apache...

    HttpClient 4.0.3 Api 帮助文档 CHM格式

    HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,...本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。

    httpclient-4.5.5-API文档-中文版.zip

    包含翻译后的API文档:httpclient-4.5.5-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.apache.httpcomponents,artifactId:httpclient,version:4.5.5 使用方法:解压翻译后的API文档,用...

    commons-httpclient-3.1 java API详细index格式文档

    《Apache Commons HttpClient 3.1 Java API详解》 Apache Commons HttpClient 3.1 是一个功能强大的Java HTTP客户端库,它提供了全面的HTTP协议支持,包括基本的GET和POST请求、Cookie管理、重定向处理以及HTTPS...

    httpclient 4.5.3 API doc

    httpclient 4.5.3 API doc httpclient4.5.3.chm 纯网站镜像

    HttpClient4.5-API-部分翻译

    由网上博客整理而成的PDF。该PDF是关于HttpClient4.5-API进行部分翻译,我觉得翻译的很不错,就整理下来留存一份。原博客地址:http://blog.csdn.net/u011179993/article/details/47123727 侵删。谢谢。

    httpclient-4.5.6-API文档-中文版.zip

    赠送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.1.4 API

    本文将深入探讨HttpClient 4.1.4 API的主要特性和使用方法。 一、HttpClient基础 HttpClient的核心类是`org.apache.http.client.HttpClient`,它是执行HTTP请求的入口点。创建HttpClient实例后,可以调用`execute...

    HttpClient.入门和实战.docx

    HttpClient 入门和实战 HttpClient 是一个基于 HTTP/1.1 协议的客户端编程工具,可以用来发送 HTTP 请求和接收响应。HttpClient 可以用来实现 HTTP 客户端的各种功能,如发送 GET、POST、PUT、DELETE 等请求,上传...

    commons-httpclient.jar 包的API

    `commons-httpclient....虽然该库已经被`httpclient`模块的后续版本(如`httpclient-4.x`和`httpclient-5.x`)所取代,但`commons-httpclient.jar`在许多遗留系统中仍然广泛使用。理解其API对于维护这些系统至关重要。

Global site tag (gtag.js) - Google Analytics