首页 > 开发 > Java > 正文

基于HttpClient在HTTP协议接口测试中的使用(详解)

2024-07-13 10:12:32
字体:
来源:转载
供稿:网友

HTTP协议的接口测试中,使用到最多的就是GET请求与POST请求,其中POST请求有FORM参数提交请求与RAW请求,下面我将结合HttpClient来实现一下这三种形式:

一、GET请求: GET请求时,参数一般是写在链接上的,代码如下:

public void get(String url){  CloseableHttpClient httpClient = null;  HttpGet httpGet = null;  try {    httpClient = HttpClients.createDefault();    RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build();       httpGet = new HttpGet(url);    httpGet.setConfig(requestConfig);    CloseableHttpResponse response = httpClient.execute(httpGet);    HttpEntity httpEntity = response.getEntity();    System.out.println(EntityUtils.toString(httpEntity,"utf-8"));  } catch (ClientProtocolException e) {    e.printStackTrace();  } catch (IOException e) {    e.printStackTrace();  }finally{    try {      if(httpGet!=null){        httpGet.releaseConnection();      }      if(httpClient!=null){        httpClient.close();      }    } catch (IOException e) {      e.printStackTrace();    }  }}

如果想把参数不写在链接上,单独的传进去,则可以这样:

public void get(String url, Map<String, String> params){  CloseableHttpClient httpClient = null;  HttpGet httpGet = null;  try {    httpClient = HttpClients.createDefault();    RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build();    String ps = "";    for (String pKey : params.keySet()) {      if(!"".equals(ps)){        ps = ps + "&";      }      ps = pKey+"="+params.get(pKey);    }    if(!"".equals(ps)){      url = url + "?" + ps;    }    httpGet = new HttpGet(url);    httpGet.setConfig(requestConfig);    CloseableHttpResponse response = httpClient.execute(httpGet);    HttpEntity httpEntity = response.getEntity();    System.out.println(EntityUtils.toString(httpEntity,"utf-8"));  } catch (ClientProtocolException e) {    e.printStackTrace();  } catch (IOException e) {    e.printStackTrace();  }finally{    try {      if(httpGet!=null){        httpGet.releaseConnection();      }      if(httpClient!=null){        httpClient.close();      }    } catch (IOException e) {      e.printStackTrace();    }  }}

二、POST请求的表单提交方式,代码如下:

public void post(String url, Map<String, String> params){  CloseableHttpClient httpClient = null;  HttpPost httpPost = null;  try {    httpClient = HttpClients.createDefault();    RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build();    httpPost = new HttpPost(url);    httpPost.setConfig(requestConfig);    List<NameValuePair> ps = new ArrayList<NameValuePair>();    for (String pKey : params.keySet()) {      ps.add(new BasicNameValuePair(pKey, params.get(pKey)));    }    httpPost.setEntity(new UrlEncodedFormEntity(ps));    CloseableHttpResponse response = httpClient.execute(httpPost);    HttpEntity httpEntity = response.getEntity();    System.out.println(EntityUtils.toString(httpEntity,"utf-8"));  } catch (ClientProtocolException e) {    e.printStackTrace();  } catch (IOException e) {    e.printStackTrace();  }finally{    try {      if(httpPost!=null){        httpPost.releaseConnection();      }      if(httpClient!=null){        httpClient.close();      }    } catch (IOException e) {      e.printStackTrace();    }  }}

三、 POST请求的RAW参数传递:

public void post(String url, String body){  CloseableHttpClient httpClient = null;  HttpPost httpPost = null;  try {    httpClient = HttpClients.createDefault();    RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(20000).setConnectTimeout(20000).build();    httpPost = new HttpPost(url);    httpPost.setConfig(requestConfig);    httpPost.setEntity(new StringEntity(body));    CloseableHttpResponse response = httpClient.execute(httpPost);    HttpEntity httpEntity = response.getEntity();    System.out.println(EntityUtils.toString(httpEntity,"utf-8"));  } catch (ClientProtocolException e) {    e.printStackTrace();  } catch (IOException e) {    e.printStackTrace();  }finally{    try {      if(httpPost!=null){        httpPost.releaseConnection();      }      if(httpClient!=null){        httpClient.close();      }    } catch (IOException e) {      e.printStackTrace();    }  }}

以上这篇基于HttpClient在HTTP协议接口测试中的使用(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表