100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Http请求工具类:Get/Post

Http请求工具类:Get/Post

时间:2022-09-21 02:42:10

相关推荐

Http请求工具类:Get/Post

第一种

import com.alibaba.fastjson.JSONObject;import org.apache.http.HttpEntity;import org.apache.http.ParseException;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.config.ConnectionConfig;import org.apache.http.config.Registry;import org.apache.http.config.RegistryBuilder;import org.apache.http.config.SocketConfig;import org.apache.http.conn.socket.ConnectionSocketFactory;import org.apache.http.conn.socket.LayeredConnectionSocketFactory;import org.apache.http.conn.socket.PlainConnectionSocketFactory;import org.apache.http.conn.ssl.SSLConnectionSocketFactory;import org.apache.http.conn.ssl.SSLContexts;import org.apache.http.conn.ssl.TrustStrategy;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClientBuilder;import org.apache.http.impl.client.HttpClients;import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;import org.apache.http.message.BasicHeader;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;import .ssl.SSLContext;import java.io.IOException;import java.nio.charset.Charset;import java.security.KeyManagementException;import java.security.KeyStore;import java.security.KeyStoreException;import java.security.NoSuchAlgorithmException;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;/*** @program: http请求工具类* @Description* @Author Yph*/public class HttpUtil {public static String defaultEncoding = "utf-8";/*** @Description: 发送http post请求,并返回响应实体* @Author: Yph* @Param [url:url]* @Return: java.lang.String**/public static String postRequest(String url) {return postRequest(url, null, null);}/*** @Description: 发送http post请求,并返回响应实体* @Author: Yph* @Param [url:url, params:json对象格式参数]* @Return: java.lang.String**/public static String postRequest(String url, JSONObject params) {return postRequest(url, null, params);}/*** @Description: 发送http post请求,并返回响应实体* @Author: Yph* @Param [url:url, headersMap:请求头,params:json对象格式参数]* @Return: java.lang.String**/public static String postRequest(String url, Map<String, String> headersMap,JSONObject params) {String result = null;CloseableHttpClient httpClient = buildHttpClient();HttpPost httpPost = new HttpPost(url);//请求头if (null != headersMap && headersMap.size() > 0) {for (Entry<String, String> entry : headersMap.entrySet()) {String key = entry.getKey();String value = entry.getValue();httpPost.addHeader(new BasicHeader(key, value));}}//参数JSON格式if (null != params && params.size() > 0) {StringEntity stringEntity = new StringEntity(params.toString(), "utf-8");stringEntity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));httpPost.setEntity(stringEntity);}try {CloseableHttpResponse response = null;if (httpClient != null) {response = httpClient.execute(httpPost);}try {HttpEntity entity = null;if (response != null) {entity = response.getEntity();}if (entity != null) {result = EntityUtils.toString(entity,Charset.forName(defaultEncoding));}} finally {if (response != null) {response.close();}}} catch (Exception ex) {ex.printStackTrace();} finally {try {if (httpClient != null) {httpClient.close();}} catch (IOException e) {e.printStackTrace();}}return result;}/*** @Description: 发送http get请求,并返回响应实体* @Author: Yph* @Param [url]* @Return: java.lang.String**/public static String getRequest(String url) {return getRequest(url, null);}/*** @Description: 发送http get请求,并返回响应实体* @Author: Yph* @Param [url:url, params:参数]* @Return: java.lang.String**/public static String getRequest(String url, Map<String, Object> params) {return getRequest(url, null, params);}/*** @Description:* @Author: Yph* @Param [url:url, headersMap:请求头, params:参数]* @Return: java.lang.String**/public static String getRequest(String url, Map<String, String> headersMap, Map<String, Object> params) {String result = null;CloseableHttpClient httpClient = buildHttpClient();try {String apiUrl = url;if (null != params && params.size() > 0) {StringBuffer param = new StringBuffer();int i = 0;for (String key : params.keySet()) {if (i == 0)param.append("?");elseparam.append("&");param.append(key).append("=").append(params.get(key));i++;}apiUrl += param;}HttpGet httpGet = new HttpGet(apiUrl);if (null != headersMap && headersMap.size() > 0) {for (Entry<String, String> entry : headersMap.entrySet()) {String key = entry.getKey();String value = entry.getValue();httpGet.addHeader(new BasicHeader(key, value));}}CloseableHttpResponse response = httpClient.execute(httpGet);try {HttpEntity entity = response.getEntity();if (null != entity) {result = EntityUtils.toString(entity, defaultEncoding);}} finally {response.close();}} catch (ClientProtocolException e) {e.printStackTrace();} catch (ParseException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {httpClient.close();} catch (IOException e) {e.printStackTrace();}}return result;}/*** 创建httpclient*/public static CloseableHttpClient buildHttpClient() {try {RegistryBuilder<ConnectionSocketFactory> builder = RegistryBuilder.create();ConnectionSocketFactory factory = new PlainConnectionSocketFactory();builder.register("http", factory);KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());SSLContext context = SSLContexts.custom().useTLS().loadTrustMaterial(trustStore, new TrustStrategy() {public boolean isTrusted(X509Certificate[] chain,String authType) throws CertificateException {return true;}}).build();LayeredConnectionSocketFactory sslFactory = new SSLConnectionSocketFactory(context,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);builder.register("https", sslFactory);Registry<ConnectionSocketFactory> registry = builder.build();PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager(registry);ConnectionConfig connConfig = ConnectionConfig.custom().setCharset(Charset.forName(defaultEncoding)).build();SocketConfig socketConfig = SocketConfig.custom().setSoTimeout(100000).build();manager.setDefaultConnectionConfig(connConfig);manager.setDefaultSocketConfig(socketConfig);return HttpClientBuilder.create().setConnectionManager(manager).build();} catch (KeyStoreException e) {e.printStackTrace();} catch (KeyManagementException e) {e.printStackTrace();} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return null;}public static void main(String[] args) {String url = "http://127.0.0.1:8080/ListAll";JSONObject params = new JSONObject();params.put("userId", "1");params.put("pageNo", 1);params.put("pageSize", 10);System.out.println(params);Map<String, String> heardMap = new HashMap<String, String>();heardMap.put("X-Access-Token", "1");String result = HttpUtil.postRequest(url, heardMap, params);System.out.println("响应--->>> " + result);}/*** @Description: 发送post请求* @Author: Yph* @Param [url:url, jsonObject:参数(json类型), encoding:编码格式]* @Return: java.lang.String**/public static String send(String url, JSONObject jsonObject, String encoding) throws ParseException, IOException {String body = "";//创建httpclient对象CloseableHttpClient client = HttpClients.createDefault();//创建post方式请求对象HttpPost httpPost = new HttpPost(url);//装填参数StringEntity s = new StringEntity(jsonObject.toString(), "utf-8");s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));//设置参数到请求对象中httpPost.setEntity(s);System.out.println("请求地址:" + url);//设置header信息//指定报文头【Content-type】、【User-Agent】//httpPost.setHeader("Content-type", "application/x-www-form-urlencoded");httpPost.setHeader("Content-type", "application/json");httpPost.setHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");//执行请求操作,并拿到结果(同步阻塞)CloseableHttpResponse response = client.execute(httpPost);//获取结果实体HttpEntity entity = response.getEntity();if (entity != null) {//按指定编码转换结果实体为String类型body = EntityUtils.toString(entity, encoding);}EntityUtils.consume(entity);//释放链接response.close();return body;}}

第二种

package com.shinkeer.core.utils;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import lombok.extern.slf4j.Slf4j;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import .URL;import .URLConnection;import java.util.HashMap;import java.util.Map;/*** @description: http请求工具类* @author: Yph* @date: /12/7**/@Slf4jpublic class HttpUtils {/*** @description: post请求* @author: Yph* @date: /12/7* @param: [url:url, headersMap:请求头, param:入参(json格式字符串)]* @return: java.lang.String(json格式字符串)**/public static String sendJsonPost(String url, Map<String, String> headersMap, String params) {System.out.println("\n==============================POST请求开始==============================");PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");//设置Content-type 为 application/jsonconn.addRequestProperty("Content-type", "application/json");//自定义请求头如Token之类if (null != headersMap && headersMap.size() > 0) {for (Map.Entry<String, String> entry : headersMap.entrySet()) {String key = entry.getKey();String value = entry.getValue();conn.setRequestProperty(key, value);}}// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(params);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}//使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}System.out.println("url:" + url);System.out.println("POST请求结果:" + result);System.out.println("==============================POST请求结束==============================\n");return result;}/*** @description: get请求* @author: Yph* @date: /12/7* @param: [url:url, headersMap:请求头, param:入参(json格式字符串)]* @return: java.lang.String(json格式字符串)**/public static String sendJsonGet(String url, Map<String, String> headersMap, String params) {System.out.println("\n==============================GET请求开始==============================");PrintWriter out = null;BufferedReader in = null;String result = "";try {Map<String, Object> mapJson = JSON.parseObject(params);String param = setParams(mapJson);String urlNameString = url + "?" + param;log.info("sendGet - {}", urlNameString);URL realUrl = new URL(urlNameString);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");//设置Content-type 为 application/jsonconn.addRequestProperty("Content-type", "application/json");//自定义请求头如Token之类if (null != headersMap && headersMap.size() > 0) {for (Map.Entry<String, String> entry : headersMap.entrySet()) {String key = entry.getKey();String value = entry.getValue();conn.setRequestProperty(key, value);}}conn.getInputStream();in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 GET 请求出现异常!" + e);e.printStackTrace();}//使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}System.out.println("url:" + url);System.out.println("GET请求结果:" + result);System.out.println("==============================GET请求结束==============================\n");return result;}/*** 拼装参数到url** @param params 参数* @return 参数字符串*/public static String setParams(Map<String, Object> params) {StringBuilder param = new StringBuilder();for (Map.Entry<String, Object> entry : params.entrySet()) {param.append("&").append(entry.getKey()).append("=").append(entry.getValue());}return param.substring(1);}public static void main(String[] args) {String url = "https:";//postString url2 = "https:";//getJSONObject params = new JSONObject();params.put("platformOrderCode", "7J961670376400639ls844848");params.put("pageNo", 1);params.put("pageSize", 10);System.out.println(params.toString());JSONObject params2 = new JSONObject();params2.put("categoryId", "5a490093e57a457cbad34f5fc494f49d");System.out.println(params2.toString());Map<String, String> heardMap = new HashMap<String, String>();heardMap.put("Access-Token", "eHCMNrBS4382qCTuJXz4FKrUYYFu7GTR+ZVTkxLyq1OnacedVl9qr17Q6P6l/+1H");String result = sendJsonPost(url, heardMap, params.toString());Map map = JSON.parseObject(result);String result2 = sendJsonGet(url2, heardMap, params2.toString());Map map2 = JSON.parseObject(result2);System.out.println("请求结果POST>>> " + map);System.out.println("请求结果GET>>> " + map2);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。