HttpClient详细应用请参考官方api文档:http://hc.apache.org/httpcomponents-client-4.5.x/httpclient/apidocs/index.html

1.使用httpclient进行接口测试,所需jar包如下:httpclient.jar、 httpcore.jar、 commons-logging.jar

2.使用JSONObject插件处理响应数据
 所需的6个JAR包:json-lib.jar、commons-beanutils.jar、commons-collections.jar、ezmorph.jar、commons-logging.jar、commons-lang.jar

3.使用正则表达式匹配提取响应数据

 public class UserApiTest {
private static CloseableHttpClient httpClient = null; @BeforeClass
public static void setUp(){
httpClient = HttpClients.createDefault(); //创建httpClient
} @AfterClass
public static void terDown() throws IOException{
httpClient.close();
}
 
/*
* 使用httpclient进行接口测试,所需jar包如下:
*httpclient.jar、 httpcore.jar、 commons-logging.jar
*get请求
**/
@Test
public void userQueryWithRegTest1() throws ClientProtocolException, IOException{
HttpGet request = new HttpGet("url地址"); // 创建请求
//设置请求和连接超时时间,可以不设置
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout().setConnectTimeout().build();
request.setConfig(requestConfig); //get请求设置请求和传输超时时间
CloseableHttpResponse response = httpClient.execute(request); //执行请求
String body = EntityUtils.toString(response.getEntity());
response.close(); //释放连接
System.out.println(body); //获取响应头信息
Header headers[] = response.getAllHeaders();
for(Header header:headers){
System.out.println(header.getName()+": "+header.getValue());
} // 打印响应信息
System.out.println(response.getStatusLine().getStatusCode());
} /*
* 使用httpclient进行接口测试,所需jar包如下:
*httpclient.jar、 httpcore.jar、 commons-logging.jar
*get请求
**/
@Test
public void testPost1() throws ClientProtocolException, IOException{
HttpPost request = new HttpPost("http://101.200.167.51:8081/fund-api/expProduct");
//设置post请求参数
List<NameValuePair> foramParams = new ArrayList<NameValuePair>();
foramParams.add(new BasicNameValuePair("name", "新手体验"));
foramParams.add(new BasicNameValuePair("yieldRate", ""));
foramParams.add(new BasicNameValuePair("extraYieldRate", ""));
foramParams.add(new BasicNameValuePair("duration", ""));
foramParams.add(new BasicNameValuePair("minBidAmount", ""));
foramParams.add(new BasicNameValuePair("maxBidAmount", ""));
UrlEncodedFormEntity urlEntity = new UrlEncodedFormEntity(foramParams, "UTF-8");
request.setEntity(urlEntity); //设置POST请求参数
CloseableHttpResponse response = httpClient.execute(request); //执行post请求
String body = EntityUtils.toString(response.getEntity());
response.close(); //释放连接
System.out.println(body);
JSONObject jsonObj = JSONObject.fromObject(body);
System.out.println("是否成功:"+jsonObj.getString("msg").equals("成功"));
} /*
* 用正则表达式提取响应数据
* */
@Test
public void userQueryWithRegTest2() throws ClientProtocolException, IOException{
HttpGet request = new HttpGet("url地址"); // 创建请求
CloseableHttpResponse response = httpClient.execute(request); // 执行某个请求
String body = EntityUtils.toString(response.getEntity()); // 得到响应内容
response.close();
System.out.println(body); // "nickname":"([a-zA-Z0-9]*)"
Pattern pattern = Pattern.compile("\"mobile\":\"(\\d+)\",\"nickname\":\"([a-zA-Z0-9]*)\".*\"status\":(\\d)"); // 从正则表达式得到一个模式对象
Matcher matcher = pattern.matcher(body);// 对响应内容进行匹配
while (matcher.find()) {
String group0 = matcher.group(); // **_g0
String group1 = matcher.group(); // **_g1
String group2 = matcher.group(); // **_g1
String group3 = matcher.group(); // **_g1
System.out.println(group0 + "\t" + group1 + "\t" + group2 + "\t" + group3);
} } /*
* 使用JsonPath提取json响应数据中的数据
* 需要的jar包:json-path-2.2.0.jar
*/
@Test
public void userQueryWithRegTest3() throws ClientProtocolException, IOException{
HttpGet request = new HttpGet("url地址"); // 创建请求
CloseableHttpResponse response = httpClient.execute(request); // 执行某个请求
String body = EntityUtils.toString(response.getEntity()); // 得到响应内容
response.close();
System.out.println(body); ReadContext ctx = JsonPath.parse(body);
String mobile = ctx.read("$.data.mobile");
String nickname = ctx.read("$.data.nickname");
int status = ctx.read("$.data.status");
String avatar = ctx.read("$.data.avatar");
System.out.println(mobile + "\t" + nickname + "\t" + status + "\t" + avatar);
} /*
* 使用JSONObject插件处理响应数据
* 所需的6个JAR包:json-lib.jar、commons-beanutils.jar、commons-collections.jar、ezmorph.jar、commons-logging.jar、commons-lang.jar
*/
@Test
public void userQueryWithRegTest5() throws ClientProtocolException, IOException{
HttpGet request = new HttpGet("url地址"); // 创建请求
CloseableHttpResponse response = httpClient.execute(request); // 执行某个请求
String body = EntityUtils.toString(response.getEntity()); // 得到响应内容
response.close(); //将响应的字符串转换为JSONObject对象
JSONObject jsonObj = JSONObject.fromObject(body);
System.out.println(jsonObj.getString("code").equals(""));
//data是对象中的一个对象,使用getJSONObject()获取
JSONObject jsonObj1 = jsonObj.getJSONObject("data");
System.out.println("status:"+jsonObj1.getInt("status")+"\n"+"nickname:"+jsonObj1.getString("nickname"));
} /*
* java代码转换json
* 需要的jar包:json-lib
* */
@Test
public void testJavaToJson(){
System.out.println("--------------------------------------------------------------");
System.out.println("java代码封装为json字符串:");
JSONObject jsonObj = new JSONObject();
jsonObj.put("username", "张三");
jsonObj.put("password", "");
System.out.println("java--->json: "+jsonObj.toString());
System.out.println("--------------------------------------------------------------");
} /*
* json字符串转xml字符串
* 需要的jar包:json-lib;xom
* */
@Test
public void testJsonToXml(){
System.out.println("--------------------------------------------------------------");
System.out.println("json转xml字符串");
String jsonStr = "{\"username\":\"张三\",\"password\":\"123456\"}";
JSONObject jsonObj = JSONObject.fromObject(jsonStr);
XMLSerializer xmlSerializer = new XMLSerializer();
// 设置根元素名称
xmlSerializer.setRootName("user_info");
// 设置类型提示,即是否为元素添加类型 type = "string"
xmlSerializer.setTypeHintsEnabled(false);
String xml = xmlSerializer.write(jsonObj);
System.out.println("json--->xml: "+xml);
System.out.println("--------------------------------------------------------------");
} /*
* xml字符串转json字符串
* 需要的jar包:json-lib;xom
* */
@Test
public void testXmlToJson(){
System.out.println("--------------------------------------------------------------");
System.out.println("xml字符串转json字符串");
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><user_info><password>123456</password><username>张三</username></user_info>";
XMLSerializer xmlSerializer = new XMLSerializer();
JSON json= xmlSerializer.read(xml); //JSON是JSONObject的String形式
System.out.println("xml---->json:"+json);
System.out.println("--------------------------------------------------------------");
} /*
* javaBean转json
* 需要的jar包:json-lib
* */
@Test
public void testJavaBeanToJson(){
System.out.println("--------------------------------------------------------------");
System.out.println("javaBean转json");
UserInfo userInfo = new UserInfo();
userInfo.setUsername("张三");
userInfo.setPassword("");
JSONObject JsonObj = JSONObject.fromObject(userInfo);
System.out.println("javaBean--->json:"+JsonObj.toString());
System.out.println("--------------------------------------------------------------");
} /*
* javaBean转xml
* 需要的jar包:json-lib;xom
* */
@Test
public void testJavaBeanToXml(){
System.out.println("--------------------------------------------------------------");
System.out.println("javaBean转xml");
UserInfo userInfo = new UserInfo();
userInfo.setUsername("张三");
userInfo.setPassword("");
JSONObject JsonObj = JSONObject.fromObject(userInfo);
XMLSerializer xmlSerializer = new XMLSerializer();
xmlSerializer.setRootName("user_info");
String xml = xmlSerializer.write(JsonObj, "UTF-8");
System.out.println("javaBeanToXml--->xml:"+xml);
System.out.println("--------------------------------------------------------------");
}
}

补充:

   /*
*使用 java.net.URL.URL请求
* */
@Test
public void useJavaUrl(){
String httpUrl = "http://apis.baidu.com/showapi_open_bus/mobile/find";
String httpArg = "num=13901452908";
BufferedReader reader = null;
String result = null;
StringBuffer sbf = new StringBuffer();
httpUrl = httpUrl + "?" + httpArg; try {
URL url = new URL(httpUrl);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setRequestMethod("GET");
// 填入apikey到HTTP header
connection.setRequestProperty("apikey", "f584d68b4aebca91c154bffd397e05cd");
connection.connect();
InputStream is = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String strRead = null;
while ((strRead = reader.readLine()) != null) {
sbf.append(strRead);
sbf.append("\r\n");
}
reader.close();
result = sbf.toString();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(result);
}

UserInfo:

public class UserInfo {
public String username;
public String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
} }

一.HttpClient、JsonPath、JsonObject运用的更多相关文章

  1. java http 请求的工具类

    /*** Eclipse Class Decompiler plugin, copyright (c) 2016 Chen Chao (cnfree2000@hotmail.com) ***/pack ...

  2. 基于HttpClient JSONObject与JSONArray的使用

    package com.spring.utils; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.ap ...

  3. 基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport的接口自动化测试框架

    接口自动化框架 项目说明 本框架是一套基于maven+java+TestNG+httpclient+poi+jsonpath+ExtentReport而设计的数据驱动接口自动化测试框架,TestNG ...

  4. Java测试开发--JSONPath、JSONArray、JSONObject使用(十)

    一.Maven项目,pom.xml文件中导入 <dependency> <groupId>com.alibaba</groupId> <artifactId& ...

  5. JsonPath入门教程

    有时候需要从json里面提取相关数据,必须得用到如何提取信息的知识,下面来写一下 语法格式 JsonPath 描述 $ 根节点 @ 当前节点 .or[] 子节点 .. 选择所有符合条件的节点 * 所有 ...

  6. HttpClient相关

    HTTPClient的主页是http://jakarta.apache.org/commons/httpclient/,你可以在这里得到关于HttpClient更加详细的信息 HttpClient入门 ...

  7. httpClient实现微信公众号消息群发

    1.实现功能 向关注了微信公众号的微信用户群发消息.(可以是所有的用户,也可以是提供了微信openid的微信用户集合) 2.基本步骤 前提: 已经有认证的公众号或者测试公众账号 发送消息步骤: 发送一 ...

  8. 使用httpclient 调用selenium webdriver

    结合上次研究的selenium webdriver potocol ,自己写http request调用remote driver代替selenium API selenium web driver ...

  9. httpclient 使用方式介绍

    第一:Get方式请求 package com.hct; import java.io.BufferedReader; import java.io.IOException; import java.i ...

随机推荐

  1. .Net用户使用期限的设置、限制通用小组件

    .Net用户使用期限的设置.限制通用小组件 最近比较项目组的同事都比较烦,不断的穿梭在不同的项目之间,一个人同时要兼顾多个项目的维护修改.甚至刚放下这个客户的电话,另一个客户的电话就进来了.究其原因, ...

  2. 一步步学习Python-django开发-Mac下搭建Python-Django环境

    首先确定学习那一个版本,以之前对Python的接触,Python2.x 的版本仍然占据很大的市场.但作为初学者我还是决定学习新的版本,相信未来会逐渐转向3.x版本的. 其实搭建Python不是一件很难 ...

  3. C++应用程序在Windows下的编译、链接(一)概述

    C++应用程序在Windows下的编译.链接(一)概述 本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 c ...

  4. asp.net MVC 路由机制

    1:ASP.NET的路由机制主要有两种用途: -->1:匹配请求的Url,将这些请求映射到控制器 -->2:选择一个匹配的路由,构造出一个Url 2:ASP.NET路由机制与URL重写的区 ...

  5. Nginx学习之十四-GDB调试Nginx初试

    本文的测试环境: Win7+虚拟机VMWareVMware-workstation-full-7.1.4-385536+Ubuntu12.04 Nginx-1.4.0 要想有效的研究Nginx源码,必 ...

  6. Java-继承的应用

    class array {  private int[] temp;  private int foot;  public array(int len)   //为temp数组规定大小,并开辟空间,申 ...

  7. Objective-C之run loop详解

    Objective-C之run loop详解 做了一年多的IOS开发,对IOS和Objective-C深层次的了解还十分有限,大多还停留在会用API的级别,这是件挺可悲的事情.想学好一门语言还是需要深 ...

  8. Linux登录ssh携带密码

    最近在使用ssh,但是每次都需要输入密码,想简单一步搞定,Google了一下,发现了一个比较笨的但实用的方法 1.安装 sshpass sudo apt-get install sshpass 2.携 ...

  9. 维吉尼亚密码java代码实现根据密钥长度计算IC值过程

    package cn.longxuzi; import java.util.Scanner; import org.junit.Test; public class ICUtils { /** * @ ...

  10. eclipse安装svn插件的多种方式

    方法一:在线安装 1.打开HELP->MyEclipse Configuration Center.切换到SoftWare标签页. 2.点击Add Site 打开对话框,在对话框Name输入Sv ...