HttpClient使用
上一篇 /
下一篇 2014-06-17 16:37:26
/ 个人分类:接口测试
最近在研究
接口测试,所以学习httpclient做测试
首先来看一个Get请求的非常简单的例子:
- try {
- HttpClient client = new HttpClient();
- client.getHttpConnectionManager().getParams().setConnectionTimeout(2000);
- GetMethod method = new GetMethod("http://www.google.com.hk/");//访问下谷歌的首页
- int statusCode = client.executeMethod(method);
- if (statusCode != HttpStatus.SC_OK) {
- System.out.println("远程访问失败。");
- }
- System.out.println(method.getResponseBodyAsString());
- client.getHttpConnectionManager().closeIdleConnections(1);
- }catch(....) {.....}
注意,上述反馈结果可能和你用一个socket去模拟一些系统没有什么区别,因为返回的内容没有任何价值,都是页面标签,当你和另一个系统交互时,它做response数据时,可以返回指定的json、xml等格式,用处就非常好用了,下面还会提及到它的好处;注意,采用GET方法,参数放在URL上面,要将非英文字符传递过去,需要对数据进行编码,如:
- String url = "http://www.xxx.xxx.com/xxx?name=" + URLEncoder.encode("谢宇" , "GBK") + "&otherName=" + URLEncoder.encode("谢宇" , "GBK") ;
其中URLEncoder使用apache或jdk自带的均可。
顺便再写个POST的例子:
- try {
- HttpClient client = new HttpClient();
- client.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "GBK");
- client.getHttpConnectionManager().getParams().setConnectionTimeout(2000);
- PostMethod method = new PostMethod("http://www.xxx.xxx.com/aaa/bbb.do");
- method.setRequestBody(new NameValuePair[] {
- new NameValuePair("name" , "谢宇"), new NameValuePair("otherName" , "谢宇")
- });
- int statusCode = client.executeMethod(method);
- if (statusCode != HttpStatus.SC_OK) {
- System.out.println("远程访问失败。");
- }
- System.out.println(method.getResponseBodyAsString());
- client.getHttpConnectionManager().closeIdleConnections(1);
- }catch(....) {.....}
可以看出,Post的例子和Get差不多,唯一的区别是传入参数的方法post采用了单独逐个写参数的方法,而get是在URL上面。
因为实际中我们有时候需要cookie一直重复使用的,所以需要做设置,
HttpClient httpClient = new HttpClient();
httpClient.getParams().setCookiePolicy(CookiePolicy.RFC_2109);
上面这段代码表示只要httpClient这个实例化对象没有变化,cookie可以一直重复使用
收藏
举报
TAG: