HttpClient在HTTP協議接口測試中的使用

HTTP協議的接口測試中,使用到最多的就是GET請求與POST請求,其中POST請求有FORM參數提交請求與RAW請求,下面我將結合HttpClient來實現一下這三種形式:java

一.GET請求: GET請求時,參數通常是寫在連接上的,代碼以下:post

     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請求的表單提交方式,代碼以下:ui

	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參數傳遞:url

	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();
			}
		}
	}
相關文章
相關標籤/搜索