zoukankan      html  css  js  c++  java
  • HttpClient在HTTP协议接口测试中的使用

    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();
    			}
    		}
    	}
    
  • 相关阅读:
    构建之法十五
    十二周学习总结笔记
    构建之法十四
    构建之法十一
    构建之法十三
    用户体验评价
    构建之法第十章
    十一周总结学习笔记
    找水王
    十周总结学习笔记
  • 原文地址:https://www.cnblogs.com/zhangfei/p/5099036.html
Copyright © 2011-2022 走看看