JAVA调用https协议

 public static String requestIBM(String httpUrl, String httpArg) {
		    BufferedReader reader = null;
		    String result = null;
		    StringBuffer sbf = new StringBuffer();
		    httpUrl = httpUrl + "?" + httpArg;

		    try {
		    	//创建SSLContext对象,并使用我们指定的信任管理器初始化
		    	TrustManager[] tm = { new Upload()}; 
		    	SSLContext sslContext = SSLContext.getInstance("TLS"); 
		    	sslContext.init(null, tm, new java.security.SecureRandom()); 

		    	//从上述SSLContext对象中得到SSLSocketFactory对象
		    	SSLSocketFactory ssf = sslContext.getSocketFactory();
		    	URL url = new URL(httpUrl);
		    	//创建HttpsURLConnection对象,并设置其SSLSocketFactory对象
		    	HttpsURLConnection httpsConn = (HttpsURLConnection)url.openConnection();
		    	httpsConn.setSSLSocketFactory(ssf);
		    	httpsConn.setRequestMethod("GET");
		        // 填入apikey到HTTP header
		    	httpsConn.setHostnameVerifier(new Upload().new TrustAnyHostnameVerifier());
		    	httpsConn.connect();
		        InputStream is = httpsConn.getInputStream();
		        reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
		        String strRead = null;
		        while ((strRead = reader.readLine()) != null) {
		            sbf.append(strRead);
		            sbf.append("\r\n");
		        }
		        reader.close();
		        result = sbf.toString();
		    } catch (Exception e) {
		        e.printStackTrace();
		    }
		    return result;
		}
	 public class TrustAnyHostnameVerifier implements HostnameVerifier {
	        public boolean verify(String hostname, SSLSession session) {
	            // 直接返回true
	            return true;
	        }
		}
	@Override
	public void checkClientTrusted(X509Certificate[] arg0, String arg1)
			throws CertificateException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void checkServerTrusted(X509Certificate[] arg0, String arg1)
			throws CertificateException {
		// TODO Auto-generated method stub
		
	}

	@Override
	public X509Certificate[] getAcceptedIssuers() {
		// TODO Auto-generated method stub
		return null;
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java调用https协议需要使用证书,以下是调用https协议证书的步骤: 1. 在Java代码中设置信任所有证书的信任管理器: ``` TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); ``` 2. 加载证书,并通过CertificateFactory将证书转换为Java可识别的证书对象: ``` String certPath = "/path/to/cert.crt"; FileInputStream fis = new FileInputStream(certPath); CertificateFactory cf = CertificateFactory.getInstance("X.509"); X509Certificate cert = (X509Certificate)cf.generateCertificate(fis); fis.close(); ``` 3. 将证书添加到TrustManager中: ``` KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(null, null); keyStore.setCertificateEntry("cert", cert); TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tmf.init(keyStore); SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, tmf.getTrustManagers(), new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory()); ``` 这样就可以使用Java代码调用https协议了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值