方式发送http请求"/>
RestTemplate方式发送http请求
先前写了一个OKHttp3方式的http请求工具类,对比学习RestTemplate方式。相关的概念、原理各位可自行学习,这里分享一下RestTemplate方式的工具类。
import org.apache.http.client.methods.CloseableHttpResponse;
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;
import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;/*** http请求工具类**/
public class HttpUtil {/*** get请求** @param url* @param params 请求参数* @return*/public static String get(String url, MultiValueMap<String, String> params) {return get(url, params, null);}/*** get请求** @param url* @param params 请求参数* @param headers 请求头* @return*/public static String get(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {return request(url, params, headers, HttpMethod.GET);}/*** post请求** @param url* @param params 请求参数* @return*/public static String post(String url, MultiValueMap<String, String> params) {return post(url, params, null);}/*** post请求** @param url* @param params 请求参数* @param headers 请求头* @return*/public static String post(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {return request(url, params, headers, HttpMethod.POST);}/*** put请求** @param url* @param params 请求参数* @return*/public static String put(String url, MultiValueMap<String, String> params) {return put(url, params, null);}/*** put请求** @param url* @param params 请求参数* @param headers 请求头* @return*/public static String put(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {return request(url, params, headers, HttpMethod.PUT);}/*** delete请求** @param url* @param params 请求参数* @return*/public static String delete(String url, MultiValueMap<String, String> params) {return delete(url, params, null);}/*** delete请求** @param url* @param params 请求参数* @param headers 请求头* @return*/public static String delete(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers) {return request(url, params, headers, HttpMethod.DELETE);}/*** 表单请求** @param url* @param params 请求参数* @param headers 请求头* @param method 请求方式* @return*/public static String request(String url, MultiValueMap<String, String> params, MultiValueMap<String, String> headers, HttpMethod method) {if (params == null) {params = new LinkedMultiValueMap<>();}return request(url, params, headers, method, MediaType.APPLICATION_FORM_URLENCODED);}/*** http请求** @param url* @param params 请求参数* @param headers 请求头* @param method 请求方式* @param mediaType 参数类型* @return*/public static String request(String url, Object params, MultiValueMap<String, String> headers, HttpMethod method, MediaType mediaType) {if (url == null || url.trim().isEmpty()) {return null;}RestTemplate client = new RestTemplate();// headerHttpHeaders httpHeaders = new HttpHeaders();if (headers != null) {httpHeaders.addAll(headers);}// 提交方式:表单、jsonhttpHeaders.setContentType(mediaType);HttpEntity<Object> httpEntity = new HttpEntity(params, httpHeaders);ResponseEntity<String> response = client.exchange(url, method, httpEntity, String.class);return response.getBody();}public static String doPostJson(String url, Map<String, String> headerMap, String json) {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);if (headerMap != null) {Iterator headerIterator = headerMap.entrySet().iterator(); //循环增加headerwhile(headerIterator.hasNext()){Map.Entry<String,String> elem = (Map.Entry<String, String>) headerIterator.next();httpPost.addHeader(elem.getKey(),elem.getValue());}}// 创建请求内容StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);httpPost.setEntity(entity);// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "UTF8");} catch (Exception e) {e.printStackTrace();} finally {try {response.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}}
更多推荐
RestTemplate方式发送http请求
发布评论