java https 证书_java访问https绕过证书信任

1 package com.xing.test;2

3 import java.io.BufferedReader;4 import java.io.IOException;5 import java.io.InputStreamReader;6 import java.io.PrintWriter;7 import java.net.HttpURLConnection;8 import java.net.URL;9

10 import javax.net.ssl.HostnameVerifier;11 import javax.net.ssl.HttpsURLConnection;12 import javax.net.ssl.SSLSession;13

14 import org.apache.log4j.Logger;15

16 public classHttpsTest {17 private String url = "https://kyfw.12306.cn/";18 privateLogger logger;19 publicHttpsTest() {20 logger = Logger.getLogger(HttpsTest.class);21 }22 private static voidtrustAllHttpsCertificates() throws Exception {23 javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];24 javax.net.ssl.TrustManager tm = newmiTM();25 trustAllCerts[0] =tm;26 javax.net.ssl.SSLContext sc = javax.net.ssl.SSLContext.getInstance("SSL","SunJSSE");27 sc.init(null, trustAllCerts, null);28 javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());29 }30

31 publicString getData() {32 PrintWriter out = null;33 BufferedReader in = null;34 HttpURLConnection conn = null;35 String result = "";36 try{37 //该部分必须在获取connection前调用

38 trustAllHttpsCertificates();39 HostnameVerifier hv = newHostnameVerifier() {40 @Override41 publicboolean verify(String urlHostName, SSLSession session) {42 logger.info("Warning: URL Host:" + urlHostName + "vs." +session.getPeerHost());43 return true;44 }45 };46 HttpsURLConnection.setDefaultHostnameVerifier(hv);47 conn = (HttpURLConnection)newURL(url).openConnection();48 //发送GET请求必须设置如下两行

49 conn.setDoInput(true);50 conn.setRequestMethod("GET");51 // //发送POST请求必须设置如下两行52 //conn.setDoOutput(true);53 //conn.setDoInput(true);54 //

55 // //获取URLConnection对象对应的输出流56 //out = new PrintWriter(conn.getOutputStream());57 // //发送请求参数

58 out.print(params);

59 // //flush输出流的缓冲60 //out.flush();61

62 //flush输出流的缓冲

63 in = new BufferedReader(newInputStreamReader(conn.getInputStream()));64 String line;65 while ((line = in.readLine()) != null) {66 result +=line;67 }68 } catch(Exception e) {69 logger.error("发送 GET 请求出现异常!\t请求ID:"+"\n"+e.getMessage()+"\n");70 e.printStackTrace();71 } finally {//使用finally块来关闭输出流、输入流

72 try{73 if (in != null) {74 in.close();75 }76 } catch(IOException ex) {77 logger.error("关闭数据流出错了!\n"+ex.getMessage()+"\n");78 ex.printStackTrace();79 }80 }81 //获得相应结果result,可以直接处理......

82 returnresult;83

84 }85 static classmiTM implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager {86 publicjava.security.cert.X509Certificate[] getAcceptedIssuers() {87 return null;88 }89

90 publicboolean isServerTrusted(java.security.cert.X509Certificate[] certs) {91 return true;92 }93

94 publicboolean isClientTrusted(java.security.cert.X509Certificate[] certs) {95 return true;96 }97

98 public voidcheckServerTrusted(java.security.cert.X509Certificate[] certs, String authType)99 throws java.security.cert.CertificateException {100 return;101 }102

103 public voidcheckClientTrusted(java.security.cert.X509Certificate[] certs, String authType)104 throws java.security.cert.CertificateException {105 return;106 }107 }108 }

在连接之前调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值