HttpClient发送Get、Post请求简单实践

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/swordgirl2011/article/details/53297146

1. 配置及实例化HttpClient:

private static final CloseableHttpClient httpclient;
	public static final String CHARSET = "UTF-8";
	
	
	static{
		RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(3000).build();
		httpclient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
	}

2. 发送Get请求方法:

/**
	 * HTTP Get 获取内容
	 * @param url请求的url地址 ?之前的地址
	 * @param params请求的参数
	 * @param charset编码格式
	 * @return 页面内容
	 */
	public static String sendGet(String url, Map<String, Object> params) throws ParseException, UnsupportedEncodingException, IOException{
		
		if(params !=null && !params.isEmpty()){
			
			List<NameValuePair> pairs = new ArrayList<NameValuePair>(params.size());
			
			for (String key :params.keySet()){
				pairs.add(new BasicNameValuePair(key, params.get(key).toString()));
			}
			url +="?"+EntityUtils.toString(new UrlEncodedFormEntity(pairs), CHARSET);
		}
		
		HttpGet httpGet = new HttpGet(url);
		CloseableHttpResponse response = httpclient.execute(httpGet);
		int statusCode = response.getStatusLine().getStatusCode();
		if(statusCode !=200){
			httpGet.abort();
			throw new RuntimeException("HttpClient,error status code :" + statusCode);
		}
		HttpEntity entity = response.getEntity();
        String result = null;
        if (entity != null) {
            result = EntityUtils.toString(entity, "utf-8");
            EntityUtils.consume(entity);
            response.close();
            return result;
        }else{
        	return null;
        }
	}

3. 发送Post请求方法:

	/**
	 * HTTP Post 获取内容
	 * @param url请求的url地址 ?之前的地址
	 * @param params请求的参数
	 * @param charset编码格式
	 * @return 页面内容
	 * @throws IOException 
	 * @throws ClientProtocolException 
	 */

	public static String sendPost(String url, Map<String, Object> params) throws ClientProtocolException, IOException {

	        List<NameValuePair> pairs = null;
	        if (params != null && !params.isEmpty()) {
	            pairs = new ArrayList<NameValuePair>(params.size());
	            for (String key : params.keySet()) {
	                pairs.add(new BasicNameValuePair(key, params.get(key).toString()));
	        }
	        }
	        HttpPost httpPost = new HttpPost(url);
	        if (pairs != null && pairs.size() > 0) {
	            httpPost.setEntity(new UrlEncodedFormEntity(pairs, CHARSET));
	        }
	        CloseableHttpResponse response = httpclient.execute(httpPost);
	        int statusCode = response.getStatusLine().getStatusCode();
	        if (statusCode != 200) {
	            httpPost.abort();
	            throw new RuntimeException("HttpClient,error status code :" + statusCode);
	        }
	        HttpEntity entity = response.getEntity();
	        String result = null;
	        if (entity != null) {
	            result = EntityUtils.toString(entity, "utf-8");
	            EntityUtils.consume(entity);
		        response.close();
		        return result;
	        }else{
	        	 return null;
	        }
	}

4. 编写测试用例,进行Get 、Post请求方法的测试

4.1 测试Get方法,e .g:

	@Test
	public void testGet() throws ParseException, UnsupportedEncodingException, IOException {
		String testUrl01 = "具体的测试接口地址";
		Map<String, Object> params01 = new HashMap<>();
		params01.put("参数01", "对应的参数取值");
		params01.put("参数02", "对应的参数取值");
		System.out.println(sendGet(testUrl01, params01));
		
	}

4.2 测试Post方法,e.g:

扫描二维码关注公众号,回复: 3519942 查看本文章

@Test
	public void testPost() throws ClientProtocolException, IOException {
	
		String testUrl02 = "具体的测试接口地址";
		Map<String, Object> params02 = new HashMap<>();
		params02.put("参数01", "对应的参数取值");
		params02.put("参数02", "对应的参数取值");
		System.out.println(sendPost(testUrl02, params02));
		
	}


最后

资料参考:http://blog.csdn.net/nevergiveuplzl/article/details/52304266

猜你喜欢

转载自blog.csdn.net/swordgirl2011/article/details/53297146