当前位置 : 主页 > 编程语言 > java >

Java 如何发送http get post请求5分钟解决

来源:互联网 收集:自由互联 发布时间:2023-02-04
Java 如何发送http get post请求5分钟解决 http请求依赖 dependency groupIdorg.apache.httpcomponents/groupId artifactIdhttpcore/artifactId version4.4.8/version /dependency dependency groupIdorg.apache.httpcomponents/groupId artifa

Java 如何发送http get post请求5分钟解决

http请求依赖

<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.8</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency>

接着导入 阿里巴巴的获取json依赖

<!-- 阿里巴巴获取json其中一段数据 发送http请求导入依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.9</version> </dependency>

导入完成依赖后 导入HttpClient类 建议你们就叫这个名 省的其他类里面名都要跟着换

package com.example.demo.test;import com.alibaba.fastjson.JSONObject;import com.example.demo.test.SSLClient;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.NameValuePair;import org.apache.http.client.entity.UrlEncodedFormEntity;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.client.utils.URIBuilder;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.message.BasicHeader;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.util.ArrayList;import java.util.List;/** * HttpClient发送GET、POST请求 * @Author libin * @CreateDate 2018.5.28 16:56 */public class HttpClient { private static final Logger LOGGER = LoggerFactory.getLogger(HttpClient.class); /** * 返回成功状态码 */ private static final int SUCCESS_CODE = 200; /** * 发送GET请求 * @param url 请求url * @param nameValuePairList 请求参数 * @return JSON或者字符串 * @throws Exception */ public static Object sendGet(String url, List<NameValuePair> nameValuePairList) throws Exception{ JSONObject jsonObject = null; CloseableHttpClient client = null; CloseableHttpResponse response = null; try{ /** * 创建HttpClient对象 */ client = HttpClients.createDefault(); /** * 创建URIBuilder */ URIBuilder uriBuilder = new URIBuilder(url); /** * 设置参数 */ uriBuilder.addParameters(nameValuePairList); /** * 创建HttpGet */ HttpGet httpGet = new HttpGet(uriBuilder.build()); /** * 设置请求头部编码 */ httpGet.setHeader(new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")); /** * 设置返回编码 */ httpGet.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8")); /** * 请求服务 */ response = client.execute(httpGet); /** * 获取响应吗 */ int statusCode = response.getStatusLine().getStatusCode(); if (SUCCESS_CODE == statusCode){ /** * 获取返回对象 */ HttpEntity entity = response.getEntity(); /** * 通过EntityUitls获取返回内容 */ String result = EntityUtils.toString(entity,"UTF-8"); /** * 转换成json,根据合法性返回json或者字符串 */ try{ jsonObject = JSONObject.parseObject(result); return jsonObject; }catch (Exception e){ return result; } }else{ LOGGER.error("HttpClientService-line: {}, errorMsg{}", 97, "GET请求失败!"); } }catch (Exception e){ LOGGER.error("HttpClientService-line: {}, Exception: {}", 100, e); } finally { response.close(); client.close(); } return null; } /** * 发送POST请求 * @param url * @param nameValuePairList * @return JSON或者字符串 * @throws Exception */ public static <JSONObject> Object sendPost(String url, List<NameValuePair> nameValuePairList) throws Exception{ JSONObject jsonObject = null; CloseableHttpClient client = null; CloseableHttpResponse response = null; try{ /** * 创建一个httpclient对象 */ client = HttpClients.createDefault(); /** * 创建一个post对象 */ HttpPost post = new HttpPost(url); /** * 包装成一个Entity对象 */ StringEntity entity = new UrlEncodedFormEntity(nameValuePairList, "UTF-8"); /** * 设置请求的内容 */ post.setEntity(entity); /** * 设置请求的报文头部的编码 */ post.setHeader(new BasicHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8")); /** * 设置请求的报文头部的编码 */ post.setHeader(new BasicHeader("Accept", "text/plain;charset=utf-8")); /** * 执行post请求 */ response = client.execute(post); /** * 获取响应码 */ int statusCode = response.getStatusLine().getStatusCode(); if (SUCCESS_CODE == statusCode){ /** * 通过EntityUitls获取返回内容 */ String result = EntityUtils.toString(response.getEntity(),"UTF-8"); /** * 转换成json,根据合法性返回json或者字符串 */ try{ jsonObject = (JSONObject) com.alibaba.fastjson.JSONObject.parseObject(result); return jsonObject; }catch (Exception e){ return result; } }else{ LOGGER.error("HttpClientService-line: {}, errorMsg:{}", 146, "POST请求失败!"); } }catch (Exception e){ LOGGER.error("HttpClientService-line: {}, Exception:{}", 149, e); }finally { response.close(); client.close(); } return null; } /** * 组织请求参数{参数名和参数值下标保持一致} * @param params 参数名数组 * @param values 参数值数组 * @return 参数对象 */ public static List<NameValuePair> getParams(Object[] params, Object[] values){ /** * 校验参数合法性 */ boolean flag = params.length>0 && values.length>0 && params.length == values.length; if (flag){ List<NameValuePair> nameValuePairList = new ArrayList<>(); for(int i =0; i<params.length; i++){ nameValuePairList.add(new BasicNameValuePair(params[i].toString(),values[i].toString())); } return nameValuePairList; }else{ LOGGER.error("HttpClientService-line: {}, errorMsg:{}", 197, "请求参数为空且参数长度不一致"); } return null; } public static Object doPostData(String url, String json) throws Exception { JSONObject jsonObject = null; DefaultHttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); String result = ""; HttpResponse res = null; try { StringEntity s = new StringEntity(json.toString(), "UTF-8"); s.setContentType("application/json"); post.setHeader("Accept", "application/json"); post.setHeader("Content-type", "application/json; charset=utf-8"); post.setEntity(s); res = client.execute(post); if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { result = EntityUtils.toString(res.getEntity()); jsonObject = JSONObject.parseObject(result); return jsonObject;// return HttpStatus.SC_OK + ""; } } catch (Exception e) { if(res == null) { return "HttpResponse 为 null!"; } throw new RuntimeException(e); } if(res == null || res.getStatusLine() == null) { return "无响应"; } return res.getStatusLine().getStatusCode() + ""; } public static String doPost(String url, String map, String charset) { org.apache.http.client.HttpClient httpClient = null; HttpPost httpPost = null; String result = null; try { httpClient = new SSLClient(); httpPost = new HttpPost(url); //设置参数 httpPost.addHeader("Accept", "application/json"); httpPost.addHeader("Content-Type", "application/json;charset=UTF-8"); StringEntity stringEntity = new StringEntity(map); stringEntity.setContentEncoding("UTF-8"); stringEntity.setContentType("application/json"); httpPost.setEntity(stringEntity); HttpResponse response = httpClient.execute(httpPost); if (response != null) { HttpEntity resEntity = response.getEntity(); if (resEntity != null) { result = EntityUtils.toString(resEntity, charset); } } } catch (Exception ex) { ex.printStackTrace(); } return result; }}

接着咱们创建SSLClient类 建议都按我这个名字来

package com.example.demo.test;import org.apache.http.conn.ClientConnectionManager;import org.apache.http.conn.scheme.Scheme;import org.apache.http.conn.scheme.SchemeRegistry;import org.apache.http.conn.ssl.SSLSocketFactory;import org.apache.http.impl.client.DefaultHttpClient;import javax.net.ssl.SSLContext;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;public class SSLClient extends DefaultHttpClient { public SSLClient() throws Exception { super(); //传输协议需要根据自己的判断 SSLContext ctx = SSLContext.getInstance("TLS"); X509TrustManager tm = new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return null; } }; ctx.init(null, new TrustManager[]{tm}, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 443, ssf)); }}

好的 最后导入一个类 Test 测试类 测试发送请求

package com.example.demo.test;import org.apache.http.NameValuePair;import java.util.List;/** * 发送post/get 测试类 */public class Test { public static void main(String[] args) throws Exception{ /** * 参数值 */ Object [] params = new Object[]{"param1","param2"}; /** * 参数名 */ Object [] values = new Object[]{"value1","value2"}; /** * 获取参数对象 */ List<NameValuePair> paramsList = HttpClient.getParams(params, values); /** * 发送get */ Object result = HttpClient.sendGet(WXconstant.WXACCESSTOKEN, paramsList); /** * 发送post */ Object result2 = HttpClient.sendPost(WXconstant.WXACCESSTOKEN, paramsList); System.out.println("GET返回信息:" + result); System.out.println("POST返回信息:" + result2); }}

参数值不用动 就写你要请求的url地址就可以

Java 如何发送http  get  post请求5分钟解决_https

上一篇:Java生成当日日期 时间
下一篇:没有了
网友评论