基于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协议接口测试中的使用(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。