java HttpClient Get和Post请求案例

HttpClient

官方简介:HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

Jar下载地址:http://hc.apache.org/downloads.cgi

使用步骤:

第一步:创建对象CloseableHttpClient httpClient = HttpClients.createDefault();

第二步:创建请求方式HttpGet httpGet = new HttpGet(url);或HttpPost httpPost = new HttpPost(url);

第三步:执行请求httpClient.execute(httpGet)或httpClient.execute(httpPost)

第四步:根据请求返回的状态码判断逻辑

第五步:可增加一些可选配置,如,RequestConfig requestConfig

HttpClient Get不带参数请求

package com.xm.httpclient;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

/**
 * java http get请求,不带参数
 * @author ouyangjun
 */
public class HttpClientGet {
	
	public static void main(String[] args) {
		
		// httpclient get请求方法
		String url = "";
		requestHttpGet(url);
	}

	public static void requestHttpGet(String url){
		CloseableHttpClient httpClient = null;
		CloseableHttpResponse response = null;
		
		try{
			// 创建一个httpclient对象
			httpClient = HttpClients.createDefault();
			
			// http请求可选参数
			RequestConfig requestConfig = RequestConfig.custom()
	                .setConnectTimeout(5000)   //设置连接超时时间
	                .setConnectionRequestTimeout(5000) // 设置请求超时时间
	                .setSocketTimeout(5000)
	                .setRedirectsEnabled(true)//默认允许自动重定向
	                .build();
			
			// 创建一个Get请求,带url
			HttpGet httpGet = new HttpGet(url);
			httpGet.setConfig(requestConfig);
			
			// 执行get请求
			response = httpClient.execute(httpGet);
			
			// 判断请求返回的状态码,200表示成功
			int statusCode = response.getStatusLine().getStatusCode();
			System.out.println("请求返回的状态码: " + statusCode);
			if(statusCode == 200){
				HttpEntity entity =response.getEntity();

				String str = EntityUtils.toString(entity,"utf-8");
				System.out.println("返回结果: " + str);
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				// 释放资源
				response.close();
				
				httpClient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
}

HttpClient Get带参数请求

package com.xm.httpclient;

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

/**
 * java http get请求,带参数
 * @author ouyangjun
 */
public class HttpClientGetWithParam {
	
	public static void main(String[] args) {
		// 请求路径
		String url = "";
		
		// 请求参数
		Map<String, Object> paramsMap = new HashMap<String, Object>();
		paramsMap.put("","");
		
		// httpclient get请求,带参数
		requestHttpGetWithParam(url, paramsMap);
	}
	
	public static void requestHttpGetWithParam(String url, Map<String, Object> paramsMap){
		CloseableHttpClient httpClient = null;
		CloseableHttpResponse response = null;
		
		try{
			// 创建一个httpclient对象
			httpClient = HttpClients.createDefault();
			
			// http请求可选参数
			RequestConfig requestConfig = RequestConfig.custom()
	                .setConnectTimeout(5000)   //设置连接超时时间
	                .setConnectionRequestTimeout(5000) // 设置请求超时时间
	                .setSocketTimeout(5000)
	                .setRedirectsEnabled(true)//默认允许自动重定向
	                .build();
			
			// 拼接Get请求参数
			URIBuilder uriBuilder = new URIBuilder(url);
			for (String key : paramsMap.keySet()) {
	            uriBuilder.addParameter(key, String.valueOf(paramsMap.get(key)));
	        }
			
			// 创建一个Get请求,带url
			HttpGet httpGet = new HttpGet(uriBuilder.build());
			httpGet.setConfig(requestConfig);
			
			// 执行get请求
			response = httpClient.execute(httpGet);
			
			// 判断请求返回的状态码,200表示成功
			int statusCode = response.getStatusLine().getStatusCode();
			System.out.println("请求返回的状态码: " + statusCode);
			if(statusCode == 200){
				HttpEntity entity =response.getEntity();

				String str = EntityUtils.toString(entity,"utf-8");
				System.out.println("返回结果: " + str);
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (URISyntaxException e) {
			e.printStackTrace();
		} finally {
			try {
				// 释放资源
				response.close();
				
				httpClient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}

HttpClient Post带参数请求

package com.xm.httpclient;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

/**
 * java http post请求,带参数
 * @author ouyangjun
 */
public class HttpClientPost {

	public static void main(String[] args) {
		// 请求路径
		String url = "";
		
		// 请求参数
		Map<String, Object> paramsMap = new HashMap<String, Object>();
		paramsMap.put("","");
		
		// httpclient post请求,带参数
		requestHttpPostWithParam(url, paramsMap);
	}

	public static void requestHttpPostWithParam(String url, Map<String, Object> paramsMap){
		CloseableHttpClient httpClient = null;
		
		try{
			// 创建一个httpclient对象
			httpClient = HttpClients.createDefault();
			
			// http请求可选参数
			RequestConfig requestConfig = RequestConfig.custom()
	                .setConnectTimeout(5000)   //设置连接超时时间
	                .setConnectionRequestTimeout(5000) // 设置请求超时时间
	                .setSocketTimeout(5000)
	                .setRedirectsEnabled(true)//默认允许自动重定向
	                .build();
			
			// 拼接post请求参数
			List<NameValuePair> param = new ArrayList<NameValuePair>();
	        for (String key : paramsMap.keySet()) {
	        	param.add(new BasicNameValuePair(key, String.valueOf(paramsMap.get(key))));
	        }
			
			// 创建一个Get请求,带url
			HttpPost httpPost = new HttpPost(url);
			httpPost.setConfig(requestConfig);
			httpPost.setEntity(new UrlEncodedFormEntity(param, "UTF-8"));
			
			// 执行get请求
			HttpResponse response = httpClient.execute(httpPost);
			
			// 判断请求返回的状态码,200表示成功
			int statusCode = response.getStatusLine().getStatusCode();
			System.out.println("请求返回的状态码: " + statusCode);
			if(statusCode == 200){
				HttpEntity entity =response.getEntity();

				String str = EntityUtils.toString(entity,"utf-8");
				System.out.println("返回结果: " + str);
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				// 释放资源
				httpClient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

HttpClient Post带Json参数请求

package com.xm.httpclient;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

/**
 * java http post请求,带json参数
 * @author ouyangjun
 */
public class HttpClientPostJson {

	public static void main(String[] args) {
		// 请求路径
		String url = "";
		
		// 请求参数
		String jsonStr = "";
		
		// httpclient post请求,带json参数
		requestHttpPostWithParam(url, jsonStr);
	}

	public static void requestHttpPostWithParam(String url, String jsonStr){
		CloseableHttpClient httpClient = null;
		
		try{
			// 创建一个httpclient对象
			httpClient = HttpClients.createDefault();
			
			// http请求可选参数
			RequestConfig requestConfig = RequestConfig.custom()
	                .setConnectTimeout(5000)   //设置连接超时时间
	                .setConnectionRequestTimeout(5000) // 设置请求超时时间
	                .setSocketTimeout(5000)
	                .setRedirectsEnabled(true)//默认允许自动重定向
	                .build();
			
			// 创建一个Get请求,带url
			HttpPost httpPost = new HttpPost(url);
			httpPost.setConfig(requestConfig);
			httpPost.setHeader("Content-Type","application/json");
			httpPost.setEntity(new StringEntity(jsonStr, ContentType.create("application/json", "UTF-8")));
			System.out.println("request entity param: " + EntityUtils.toString(httpPost.getEntity()));
			
			// 执行get请求
			HttpResponse response = httpClient.execute(httpPost);
			
			// 判断请求返回的状态码,200表示成功
			int statusCode = response.getStatusLine().getStatusCode();
			System.out.println("请求返回的状态码: " + statusCode);
			if(statusCode == 200){
				HttpEntity entity =response.getEntity();

				String str = EntityUtils.toString(entity,"utf-8");
				System.out.println("返回结果: " + str);
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				// 释放资源
				httpClient.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
}

本章完结,待续!

本文说明:该文章属于原创,如需转载,请标明文章转载来源

猜你喜欢

转载自blog.csdn.net/p812438109/article/details/81877988