接口测试http的get和post请求,键值对和json传参的处理,cookie的保留


  1 package Common;
  2 
  3
  4 import com.google.gson.Gson;
  5 import org.apache.http.HttpResponse;
  6 import org.apache.http.NameValuePair;
  7 import org.apache.http.client.CookieStore;
  8 import org.apache.http.client.entity.UrlEncodedFormEntity;
  9 import org.apache.http.client.methods.HttpGet;
 10 import org.apache.http.client.methods.HttpPost;
 11 import org.apache.http.entity.StringEntity;
 12 import org.apache.http.impl.client.BasicCookieStore;
 13 import org.apache.http.impl.client.CloseableHttpClient;
 14 import org.apache.http.impl.client.HttpClients;
 15 import org.apache.http.impl.cookie.BasicClientCookie;
 16 import org.apache.http.message.BasicNameValuePair;
 17 
 18 import java.io.IOException;
 19 import java.util.ArrayList;
 20 import java.util.List;
 21 import java.util.Map;
 22 
 23 
 24 public class DoHttpClient {
 25     public static CookieStore cookieStore = new BasicCookieStore();
 26     public CloseableHttpClient client = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
 27 
 28     /**
 29      * get请求发送
 30      * */
 31     public HttpResponse sendGet(String url,String parameter) throws IOException {
 32         if(!parameter.isEmpty()){
 33             url = url + "?" + parameter;
 34         }
 35 
 36         HttpGet httpGet = new HttpGet(url);
 37         HttpResponse response = client.execute(httpGet);
 38 
 39         System.out.println("请求状态码:"+response.getStatusLine());
 40 
 41         setCookieStore(response);
 42 
 43         return response;
 44     }
 45 
 46     /**
 47      *post请求发送
 48      * 请求参数json格式无嵌套map数据
 49      * 传入String param
 50      **/
 51     public HttpResponse sendPost(String url, String param) throws IOException {
 52 
 53         HttpPost httpPost = new HttpPost(url);
 54 
 55         List<NameValuePair> formParms = new ArrayList<NameValuePair>();
 56         FormatProcessing(formParms,param);
 57         httpPost.setEntity(new UrlEncodedFormEntity(formParms,"UTF-8"));
 58 
 59         httpPost.setHeader("Context-Type","application/x-www-form-urlencoded");
 60 
 61         HttpResponse response = client.execute(httpPost);
 62 
 63         System.out.println("请求状态码:"+response.getStatusLine());
 64 
 65         setCookieStore(response);
 66 
 67         return response;
 68     }
 69 
 70     /**
 71      *post请求发送
 72      * 请求参数json格式有嵌套map数据
 73      * 传入JSONObject
 74      **/
 75     public HttpResponse sendPost(String url, Map<String,Object> map) throws IOException {
 76         HttpPost httpPost = new HttpPost(url);
 77 
 78         Gson gson = new Gson();
 79         String parameter = gson.toJson(map);
 80         StringEntity stringEntity = new StringEntity(parameter);
 81         httpPost.setEntity(stringEntity);
 82 
 83         httpPost.setHeader("Context-Type","application/x-www-form-urlencoded");
 84 
 85         HttpResponse response = client.execute(httpPost);
 86 
 87         System.out.println("请求状态码:"+response.getStatusLine());
 88 
 89         setCookieStore(response);
 90 
 91         return response;
 92     }
 93 
 94     /**
 95      *传参处理
 96      * param为key=value?key=value形式,转化成list
 97      *
 98      */
 99 
100     public void FormatProcessing(List<NameValuePair> formParams, String param){
101         String[] nameValue = param.split("&");
102         for(int i=0;i<nameValue.length;i++){
103             String key = nameValue[i].split("=")[0];
104             String value = nameValue[i].split("=")[1];
105             BasicNameValuePair basicNameValuePair = new BasicNameValuePair(key,value);
106             formParams.add(basicNameValuePair);
107         }
108     }
109 
110     /**
111      * 保留cookie
112      * @param httpResponse
113      */
114     public void setCookieStore(HttpResponse httpResponse){
115         String setCookie = new String();
116         if(httpResponse.getFirstHeader("set-Cookies")!=null){
117             setCookie = httpResponse.getFirstHeader("set-Cookie").getValue();
118         }
119         String JSESSIONID = new String();
120         if(setCookie.isEmpty()==false){
121             JSESSIONID = setCookie.substring(Integer.parseInt("JSESSIONID="),setCookie.indexOf(";"));
122 
123         }
124         //新建一个Cookie,只要使用同一个HttpClient且未关闭连接,则可以使用相同会话来访问其他要求登录验证的服务,保持cookies对话
125         BasicClientCookie basicClientCookie = new BasicClientCookie("JSESSIONID",JSESSIONID);
126         basicClientCookie.setVersion(0);
127         basicClientCookie.setDomain("127.0.0.1");//Cookie中的setDomain()主要用来在两个不同名称但是后缀相同的网站地址上.这样两个网站就能使用同一个cookie了
128         basicClientCookie.setPath("/CwlProClient");//setPath()主要用来确定什么后缀下能够使用这个cookie.即地址栏上面的地址的约束
129         cookieStore.addCookie(basicClientCookie);//设置Cookie所遵从的协议版本[默认版本0(遵从原先的Netscape规范)
130 
131     }
132 }

这里的get和post请求,直接返回了HttpResponse类型的response用于后面的数据校验,通过JsonPath来提取校验;

其中post请求,传参可以直接传String类型的键值对,然后用FormatProcessing来处理;传参为嵌套了map的话,通过gson来转化;

最后是cookie的处理,获取后把他传回去全局变量里面去使用;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM