• httpclient发起https请求以及获取https返回内容


    工作中的需要,使用Apache httpclient发起获取通过https返回的内容,试了很多网上的解决办法都不行,查阅了Apache httpclient的官方文档,最后终于找出解决方法,分享给需要的朋友,免得走弯路。

    使用时,调用getSSL方法即可获取https地址返回的内容。

    代码如下:

    	public static String getSSL(String url, String responseDecode) throws IOException {
    		
    		CloseableHttpClient httpclient = createSSLInsecureClient();
    		CloseableHttpResponse response = null;
    		String content = null;
    		try {
    			HttpGet httpget = new HttpGet(url);
    			RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(5000).setConnectTimeout(5000)
                            .setConnectionRequestTimeout(5000).build();
    			httpget.setConfig(requestConfig);
    			response = httpclient.execute(httpget);
    			HttpEntity entity = response.getEntity();
    			if (entity != null) {
    				content = EntityUtils.toString(entity);
    				EntityUtils.consume(entity);
    			}
    		} catch (ParseException e) {
    			logger.error("request URL[" + url + "] error", e);
    			throw e;
    		} catch (IOException e) {
    			logger.error("request URL[" + url + "] error", e);
    			throw e;
    		} finally {
    			if (response != null) {
    				try {
    					response.close();
    				} catch (IOException e) {
    					logger.error("", e);
    				}
    			}
    			if (httpclient != null) {
    				try {
    					httpclient.close();
    				} catch (IOException e) {
    					logger.error("", e);
    				}
    			}
    		}
    		return content;
    	}
    	
    	private static CloseableHttpClient createSSLInsecureClient() {
    		try {
    			SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
    				@Override
    				public boolean isTrusted(java.security.cert.X509Certificate[] arg0, String arg1) {
    					return true;
    				}
    			}).build();
    			SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
    			return HttpClients.custom().setSSLSocketFactory(sslsf).build();
    		} catch (KeyManagementException e) {
    			e.printStackTrace();
    		} catch (NoSuchAlgorithmException e) {
    			e.printStackTrace();
    		} catch (KeyStoreException e) {
    			e.printStackTrace();
    		}
    		return HttpClients.createDefault();
    	}
    	
    	public static void main(String[] args) {
    		ShiroUser  user = UMSHelper.invoke("10001", "10102130023000");
    		System.out.println(user);
    	}
    
  • 相关阅读:
    Java 替换 PPT 中的图片
    Java 转换 PDF 版本
    Java 在Word文档中添加艺术字
    Java 删除 Excel 中的空白行和列
    Java 为 PPT 中的图形添加阴影效果
    nginx作用及其配置
    Dockerfile
    Zookeeper学习
    vagrant up启动报错Call to WHvSetupPartition failed
    Vagrant安装启动linux,VitrtualBox,Centos7
  • 原文地址:https://www.cnblogs.com/tantec/p/apache-httpclient-https.html
Copyright © 2020-2023  润新知