• 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);
    	}
    
  • 相关阅读:
    我的有道难题算法-双倍超立方数
    终于获取了SharePoint.OpenDocument对象打开的Word对象
    Eclipse下的项目管理插件介绍
    初识 sqlite 与 content provider 学习笔记
    android 官方文档中的一些错误收集
    android TraceView (图形化性能测试工具)使用入门笔记
    Texttospeech 入门与进阶学习笔记(android)
    Intent进阶 和 Intentfilter 学习笔记
    android UI设计属性中英对照表(未修订)
    android学习笔记7天打造一个简易网络Mp3播放器
  • 原文地址:https://www.cnblogs.com/tantec/p/apache-httpclient-https.html
Copyright © 2020-2023  润新知