分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

HttpUtil

发布时间:2023-09-06 02:24责任编辑:彭小芳关键词:暂无标签
package shjt.pay.utils;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.ProtocolException;import java.net.URL;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.SSLSocketFactory;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;public class HttpUtil {public static String callServer(String askUrl,String json){ ???????String str = ""; ???????//是否启用Https ???????boolean useHttps = askUrl.startsWith("https"); ???????if(useHttps){ ???????str = doHttps(askUrl,json); ???????}else{ ???????str = doHttp(askUrl,json); ???????} ??????????????????????????????????????????return str; ??????}public static String doHttp(String askUrl,String json){ ???????StringBuffer sb = new StringBuffer(""); //输出的结果 ???????try { ???????URL url = new URL(askUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setDoOutput(true); ???????????connection.setDoInput(true); ???????????connection.setRequestMethod("POST"); ???????????connection.setUseCaches(false);//不使用缓存 ???????????connection.setInstanceFollowRedirects(true);//自动重定向 ???????????connection.setRequestProperty("connection", "Keep-Alive"); ???????????connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式 ???????????connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式 ???????????//连接 ???????????connection.connect(); ???????????//POST请求 ???????????OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(),"UTF-8"); ???????????out.write(json); ???????????out.flush(); ???????????out.close(); ???????????//读取响应 ???????????BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8")); ???????????String lines; ???????????while ((lines = reader.readLine()) != null) { ???????????????lines = new String(lines.getBytes()); ???????????????sb.append(lines); ???????????} ???????????reader.close(); ???????????connection.disconnect();} catch (IOException e) {e.printStackTrace();} ????????return sb.toString();}public static String doHttps(String askUrl,String json){StringBuffer sb = new StringBuffer(""); //输出的结果 ???????try { ???????URL url = new URL(askUrl); ???????HttpsURLConnection ?connection = (HttpsURLConnection ) url.openConnection(); ??????????????????????SSLSocketFactory oldSocketFactory = null; ???????????HostnameVerifier oldHostnameVerifier = null; ???????????oldSocketFactory = trustAllHosts(connection); ???????????oldHostnameVerifier = connection.getHostnameVerifier(); ???????????connection.setHostnameVerifier(DO_NOT_VERIFY); ???????????connection.setDoOutput(true); ???????????connection.setDoInput(true); ???????????connection.setRequestMethod("POST"); ???????????connection.setUseCaches(false);//不使用缓存 ???????????connection.setInstanceFollowRedirects(true);//自动重定向 ???????????connection.setRequestProperty("connection", "Keep-Alive"); ???????????connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式 ???????????connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式 ???????????//连接 ???????????connection.connect(); ???????????//POST请求 ???????????OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(),"UTF-8"); ???????????out.write(json); ???????????out.flush(); ???????????out.close(); ???????????//读取响应 ???????????BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"UTF-8")); ???????????String lines; ???????????while ((lines = reader.readLine()) != null) { ???????????????lines = new String(lines.getBytes()); ???????????????sb.append(lines); ???????????} ???????????reader.close(); ???????????connection.disconnect();} catch (IOException e) {e.printStackTrace();} ????????return sb.toString();}/** * 覆盖java默认的证书验证 */ private static final TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { ?public java.security.cert.X509Certificate[] getAcceptedIssuers() { ???????????return new java.security.cert.X509Certificate[]{}; } public void checkClientTrusted(X509Certificate[] chain, String authType)throws CertificateException { ?} public void checkServerTrusted(X509Certificate[] chain, String authType)throws CertificateException { ?} }}; /**  * 设置不验证主机  */ private static final HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() { ???????public boolean verify(String hostname, SSLSession session) { ???????????return true; ???????} };/**  * 信任所有  * @param connection  * @return*/private static SSLSocketFactory trustAllHosts(HttpsURLConnection connection) {SSLSocketFactory oldFactory = connection.getSSLSocketFactory();try {SSLContext sc = SSLContext.getInstance("TLS");sc.init(null, trustAllCerts, new java.security.SecureRandom());SSLSocketFactory newFactory = sc.getSocketFactory();connection.setSSLSocketFactory(newFactory);} catch (Exception e) { ?????e.printStackTrace();}return oldFactory;}}

  

HttpUtil

原文地址:https://www.cnblogs.com/1025804158ysb/p/10043420.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved