基于HttpClient在HTTP协议接口测试中的使用(详解)
HTTP协议的接口测试中,使用到最多的就是GET请求与POST请求,其中POST请求有FORM参数提交请求与RAW请求,下面我将结合HttpClient来实现一下这三种形式:
一、GET请求:GET请求时,参数一般是写在链接上的,代码如下:
publicvoidget(Stringurl){
CloseableHttpClienthttpClient=null;
HttpGethttpGet=null;
try{
httpClient=HttpClients.createDefault();
RequestConfigrequestConfig=RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build();
httpGet=newHttpGet(url);
httpGet.setConfig(requestConfig);
CloseableHttpResponseresponse=httpClient.execute(httpGet);
HttpEntityhttpEntity=response.getEntity();
System.out.println(EntityUtils.toString(httpEntity,"utf-8"));
}catch(ClientProtocolExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(httpGet!=null){
httpGet.releaseConnection();
}
if(httpClient!=null){
httpClient.close();
}
}catch(IOExceptione){
e.printStackTrace();
}
}
}
如果想把参数不写在链接上,单独的传进去,则可以这样:
publicvoidget(Stringurl,Mapparams){ CloseableHttpClienthttpClient=null; HttpGethttpGet=null; try{ httpClient=HttpClients.createDefault(); RequestConfigrequestConfig=RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build(); Stringps=""; for(StringpKey:params.keySet()){ if(!"".equals(ps)){ ps=ps+"&"; } ps=pKey+"="+params.get(pKey); } if(!"".equals(ps)){ url=url+"?"+ps; } httpGet=newHttpGet(url); httpGet.setConfig(requestConfig); CloseableHttpResponseresponse=httpClient.execute(httpGet); HttpEntityhttpEntity=response.getEntity(); System.out.println(EntityUtils.toString(httpEntity,"utf-8")); }catch(ClientProtocolExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }finally{ try{ if(httpGet!=null){ httpGet.releaseConnection(); } if(httpClient!=null){ httpClient.close(); } }catch(IOExceptione){ e.printStackTrace(); } } }
二、POST请求的表单提交方式,代码如下:
publicvoidpost(Stringurl,Mapparams){ CloseableHttpClienthttpClient=null; HttpPosthttpPost=null; try{ httpClient=HttpClients.createDefault(); RequestConfigrequestConfig=RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build(); httpPost=newHttpPost(url); httpPost.setConfig(requestConfig); List ps=newArrayList (); for(StringpKey:params.keySet()){ ps.add(newBasicNameValuePair(pKey,params.get(pKey))); } httpPost.setEntity(newUrlEncodedFormEntity(ps)); CloseableHttpResponseresponse=httpClient.execute(httpPost); HttpEntityhttpEntity=response.getEntity(); System.out.println(EntityUtils.toString(httpEntity,"utf-8")); }catch(ClientProtocolExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); }finally{ try{ if(httpPost!=null){ httpPost.releaseConnection(); } if(httpClient!=null){ httpClient.close(); } }catch(IOExceptione){ e.printStackTrace(); } } }
三、POST请求的RAW参数传递:
publicvoidpost(Stringurl,Stringbody){
CloseableHttpClienthttpClient=null;
HttpPosthttpPost=null;
try{
httpClient=HttpClients.createDefault();
RequestConfigrequestConfig=RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build();
httpPost=newHttpPost(url);
httpPost.setConfig(requestConfig);
httpPost.setEntity(newStringEntity(body));
CloseableHttpResponseresponse=httpClient.execute(httpPost);
HttpEntityhttpEntity=response.getEntity();
System.out.println(EntityUtils.toString(httpEntity,"utf-8"));
}catch(ClientProtocolExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(httpPost!=null){
httpPost.releaseConnection();
}
if(httpClient!=null){
httpClient.close();
}
}catch(IOExceptione){
e.printStackTrace();
}
}
}
以上这篇基于HttpClient在HTTP协议接口测试中的使用(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。