1.通过httpclient封装 发送请求的类
package com.test.httprequest.v2;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* @version: V1.0
* @author:
* @className: HttpUtil
* @packageName: com.zokoo.httprequest.v2
* @description: 将V1下的post请求和get 请求优化,封装成工具类
* @data:
**/
public class HttpUtil {
/**
* @Author yang sp
* @Description post 请求
* @Date 15:23 2020/3/1
* @Param [url, hashMap]
* @return java.lang.String
**/
public static String postRequest(String url, HashMap hashMap){
//设置接口地址(作为参数传入)
//2.设置请求方式
HttpPost httpPost=new HttpPost(url);
//3.设置测试数据(封装成为map,作为参数传入)
String result="";//作用域
try {
//4.将参数封装至请求体,setEntity()的参数为HttpEntity entity对象,所以通过构造方法新建对象
//构造方法的传入参数为List
List parameter =new ArrayList();
//通过循环将参数一个个取出
for (String key: hashMap.keySet()) {
parameter.add(new BasicNameValuePair(key, (String) hashMap.get(key)));
}
//将参数封装至请求体
httpPost.setEntity(new UrlEncodedFormEntity(parameter,"UTF-8"));
//5.设置客户端
CloseableHttpClient httpClient = HttpClients.createDefault();
//6.发送请求
CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
//7.从响应结果取值
int statusCode= httpResponse.getStatusLine().getStatusCode();
// System.out.println(statusCode);
result= EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* @Author yang sp
* @Description GET 请求
* @Date 20:53 2020/3/15
* @Param [url, hashMap]
* @return java.lang.String
**/
public static String getRequest(String url, HashMap hashMap){
String result="";//作用域,先声明
//1.设置接口地址(作为参数传入)
//2.设置测试数据(作为参数传入)将参数从map取值出来,拼接在URL后面
for (String key:hashMap.keySet()) {
int mark=1;
if(mark==1){
url+=("?"+key+"="+hashMap.get(key));
}else {
url+=("&"+key+"="+hashMap.get(key));
}
mark++;
}
//3.设置请求方法(get请求是将参数拼接在接口地址后面)
HttpGet httpGet=new HttpGet(url);
//4.创建客户端
CloseableHttpClient httpClient= HttpClients.createDefault();
try {//5.发送请求
CloseableHttpResponse httpResponse = httpClient.execute(httpGet);
//6.从响应结果获取值
int statusCode = httpResponse.getStatusLine().getStatusCode();
// System.out.println(statusCode);
result = EntityUtils.toString(httpResponse.getEntity());
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
public static String doService(String url, String requestMode,HashMap hashMap){
String result=null;
if (requestMode.equals("post")){
result=postRequest(url,hashMap);
}else {
result=getRequest(url,hashMap);
}
return result;
}
}
2.使用poi数据驱动从excel 读取数据
(1)创建Case的类,从将excel读取的数据封装至该类中,这样才不会每次的去解析excel
ps:case的成员变量:url method parameter expectedResponseData actualResponseData
也可以将url method 信息分开 放在restful的类中
(2)解析excel,通过反射将excel的解析到Case类中