HttpsRequest.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. package com.steerinfo.util;
  2. import java.io.*;
  3. import java.net.URL;
  4. import java.util.Map;
  5. import javax.net.ssl.HttpsURLConnection;
  6. import javax.net.ssl.SSLContext;
  7. import javax.net.ssl.SSLSocketFactory;
  8. import javax.net.ssl.TrustManager;
  9. /**
  10. * @author Bourne.Cao
  11. * @date 2021-12-30 9:34
  12. */
  13. public class HttpsRequest {
  14. /**
  15. * 向指定 URL 发送POST方法的请求
  16. *
  17. * @param url
  18. * 发送请求的 URL
  19. * @param param
  20. * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  21. * @return 所代表远程资源的响应结果
  22. */
  23. public static String sendPost(String url, String param) {
  24. PrintWriter out = null;
  25. BufferedReader in = null;
  26. String result = "";
  27. try {
  28. // 创建SSLContext对象,并使用我们指定的信任管理器初始化
  29. TrustManager[] tm = { new MyX509TrustManager() };
  30. SSLContext sslContext = SSLContext.getInstance("SSL");
  31. sslContext.init(null, tm, new java.security.SecureRandom());
  32. // 从上述SSLContext对象中得到SSLSocketFactory对象
  33. SSLSocketFactory ssf = sslContext.getSocketFactory();
  34. // 打开和URL之间的连接
  35. URL realUrl = new URL(url);
  36. HttpsURLConnection conn = (HttpsURLConnection) realUrl.openConnection();
  37. conn.setSSLSocketFactory(ssf);
  38. // 设置通用的请求属性
  39. conn.setRequestProperty("accept", "*/*");
  40. conn.setRequestProperty("connection", "Keep-Alive");
  41. conn.setRequestProperty("content-Type", "application/json");
  42. conn.setRequestProperty("user-agent",
  43. "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  44. // 发送POST请求必须设置如下两行
  45. conn.setDoOutput(true);
  46. conn.setDoInput(true);
  47. // 获取URLConnection对象对应的输出流
  48. out = new PrintWriter(conn.getOutputStream());
  49. // 发送请求参数
  50. out.print(param);
  51. // flush输出流的缓冲
  52. out.flush();
  53. // 定义BufferedReader输入流来读取URL的响应
  54. in = new BufferedReader(
  55. new InputStreamReader(conn.getInputStream()));
  56. String line;
  57. while ((line = in.readLine()) != null) {
  58. result += line;
  59. }
  60. System.out.println("-----result-----"+result);
  61. } catch (Exception e) {
  62. System.out.println("发送 POST 请求出现异常!"+e);
  63. e.printStackTrace();
  64. }
  65. //使用finally块来关闭输出流、输入流
  66. finally{
  67. try{
  68. if(out!=null){
  69. out.close();
  70. }
  71. if(in!=null){
  72. in.close();
  73. }
  74. }
  75. catch(IOException ex){
  76. ex.printStackTrace();
  77. }
  78. }
  79. return result;
  80. }
  81. /**
  82. * 向指定 URL 发送POST方法的请求
  83. *
  84. * @param url
  85. * 发送请求的 URL
  86. * @param params
  87. * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  88. * @return 所代表远程资源的响应结果
  89. */
  90. public static String sendPost(String url, Map<String, String> params) {
  91. OutputStreamWriter out = null;
  92. BufferedReader in = null;
  93. StringBuilder result = new StringBuilder();
  94. try {
  95. // 创建SSLContext对象,并使用我们指定的信任管理器初始化
  96. TrustManager[] tm = { new MyX509TrustManager() };
  97. SSLContext sslContext = SSLContext.getInstance("SSL");
  98. sslContext.init(null, tm, new java.security.SecureRandom());
  99. // 从上述SSLContext对象中得到SSLSocketFactory对象
  100. SSLSocketFactory ssf = sslContext.getSocketFactory();
  101. // 打开和URL之间的连接
  102. URL realUrl = new URL(url);
  103. HttpsURLConnection conn = (HttpsURLConnection) realUrl.openConnection();
  104. conn.setSSLSocketFactory(ssf);
  105. // POST方法
  106. conn.setRequestMethod("POST");
  107. // 发送POST请求必须设置如下两行
  108. conn.setDoOutput(true);
  109. conn.setDoInput(true);
  110. // 设置通用的请求属性
  111. conn.setRequestProperty("accept", "*/*");
  112. conn.setRequestProperty("connection", "Keep-Alive");
  113. conn.setRequestProperty("user-agent",
  114. "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  115. conn.setRequestProperty("Content-Type",
  116. "application/x-www-form-urlencoded");
  117. conn.connect();
  118. // 获取URLConnection对象对应的输出流
  119. out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
  120. // 发送请求参数
  121. if (params != null) {
  122. StringBuilder param = new StringBuilder();
  123. for (Map.Entry<String, String> entry : params.entrySet()) {
  124. if (param.length() > 0) {
  125. param.append("&");
  126. }
  127. param.append(entry.getKey());
  128. param.append("=");
  129. param.append(entry.getValue());
  130. // System.out.println(entry.getKey()+":"+entry.getValue());
  131. }
  132. System.out.println("param:" + param.toString());
  133. out.write(param.toString());
  134. }
  135. // flush输出流的缓冲
  136. out.flush();
  137. // 定义BufferedReader输入流来读取URL的响应
  138. in = new BufferedReader(new InputStreamReader(
  139. conn.getInputStream(), "UTF-8"));
  140. String line;
  141. while ((line = in.readLine()) != null) {
  142. result.append(line);
  143. }
  144. System.out.println("-----result-----"+result);
  145. } catch (Exception e) {
  146. System.out.println("发送 POST 请求出现异常!"+e);
  147. e.printStackTrace();
  148. }
  149. //使用finally块来关闭输出流、输入流
  150. finally{
  151. try{
  152. if(out!=null){
  153. out.close();
  154. }
  155. if(in!=null){
  156. in.close();
  157. }
  158. }
  159. catch(IOException ex){
  160. ex.printStackTrace();
  161. }
  162. }
  163. return result.toString();
  164. }
  165. /**
  166. * 向指定 URL 发送POST方法的请求
  167. *
  168. * @param url
  169. * 发送请求的 URL
  170. * @param params
  171. * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
  172. * @return 所代表远程资源的响应结果
  173. */
  174. public static String sendPost(String url, Map<String, String> params, String token) {
  175. OutputStreamWriter out = null;
  176. BufferedReader in = null;
  177. StringBuilder result = new StringBuilder();
  178. try {
  179. // 创建SSLContext对象,并使用我们指定的信任管理器初始化
  180. TrustManager[] tm = { new MyX509TrustManager() };
  181. SSLContext sslContext = SSLContext.getInstance("SSL");
  182. sslContext.init(null, tm, new java.security.SecureRandom());
  183. // 从上述SSLContext对象中得到SSLSocketFactory对象
  184. SSLSocketFactory ssf = sslContext.getSocketFactory();
  185. // 打开和URL之间的连接
  186. URL realUrl = new URL(url);
  187. HttpsURLConnection conn = (HttpsURLConnection) realUrl.openConnection();
  188. conn.setSSLSocketFactory(ssf);
  189. // POST方法
  190. conn.setRequestMethod("POST");
  191. // 发送POST请求必须设置如下两行
  192. conn.setDoOutput(true);
  193. conn.setDoInput(true);
  194. // 设置通用的请求属性
  195. conn.setRequestProperty("accept", "*/*");
  196. conn.setRequestProperty("connection", "Keep-Alive");
  197. conn.setRequestProperty("user-agent",
  198. "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
  199. conn.setRequestProperty("Content-Type",
  200. "application/x-www-form-urlencoded");
  201. conn.setRequestProperty("authorization",
  202. "Bearer " + token);
  203. conn.connect();
  204. // 获取URLConnection对象对应的输出流
  205. out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
  206. // 发送请求参数
  207. if (params != null) {
  208. StringBuilder param = new StringBuilder();
  209. for (Map.Entry<String, String> entry : params.entrySet()) {
  210. if (param.length() > 0) {
  211. param.append("&");
  212. }
  213. param.append(entry.getKey());
  214. param.append("=");
  215. param.append(entry.getValue());
  216. // System.out.println(entry.getKey()+":"+entry.getValue());
  217. }
  218. System.out.println("param:" + param.toString());
  219. out.write(param.toString());
  220. }
  221. // flush输出流的缓冲
  222. out.flush();
  223. // 定义BufferedReader输入流来读取URL的响应
  224. in = new BufferedReader(new InputStreamReader(
  225. conn.getInputStream(), "UTF-8"));
  226. String line;
  227. while ((line = in.readLine()) != null) {
  228. result.append(line);
  229. }
  230. System.out.println("-----result-----"+result);
  231. } catch (Exception e) {
  232. System.out.println("发送 POST 请求出现异常!"+e);
  233. e.printStackTrace();
  234. }
  235. //使用finally块来关闭输出流、输入流
  236. finally{
  237. try{
  238. if(out!=null){
  239. out.close();
  240. }
  241. if(in!=null){
  242. in.close();
  243. }
  244. }
  245. catch(IOException ex){
  246. ex.printStackTrace();
  247. }
  248. }
  249. return result.toString();
  250. }
  251. }