Java https请求 HttpsURLConnection

public static String getHtml(String url) throws FileNotFoundException,
			IOException, CertificateException, KeyStoreException,
			NoSuchAlgorithmException, UnrecoverableKeyException,
			KeyManagementException {
		//解决javax.net.ssl.SSLProtocolException: handshake alert:  unrecognized_name的异常
		System.setProperty("jsse.enableSNIExtension", "false");
		String msg = null;

		// KeyStore trust = KeyStore.getInstance("PKCS12");
		// trust.load(new FileInputStream("c:/https_key/src/server.p12"), kp);

		SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null,
				new TrustStrategy() {
					// 信任所有
					public boolean isTrusted(X509Certificate[] chain,
							String authType) throws CertificateException {
						return true;
					}
				}).build();
		// SSLContext sslContext = SSLContexts.custom()
		// .loadKeyMaterial(ks, kp)//.loadTrustMaterial(trust)
		// .build();
		SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
				sslContext, new String[] { "TLSv1" }, null,
				SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
		CloseableHttpClient httpclient = HttpClients.custom()
				.setSSLSocketFactory(sslsf).build();
		try {

			HttpGet httpget = new HttpGet(url);

			CloseableHttpResponse response = httpclient.execute(httpget);
			try {
				HttpEntity entity = response.getEntity();

				// System.out.println("----------------------------------------");
				// System.out.println(response.getStatusLine());
				// 获取响应返回状态码

				// 获取应答输入流
				// System.out.println("Response content length: " +
				// entity.getContentLength());
				BufferedReader bufferedReader = new BufferedReader(
						new InputStreamReader(entity.getContent(), "utf-8"));
				String tmp;
				StringBuffer text = new StringBuffer();
				while ((tmp = bufferedReader.readLine()) != null) {
					// System.out.println(tmp);
					text.append(tmp);
				}
				msg = text.toString();
				EntityUtils.consume(entity);
			} finally {
				response.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			httpclient.close();
		}

		return msg;
	}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值