zoukankan      html  css  js  c++  java
  • 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);
    	}
    
  • 相关阅读:
    qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
    使用 acl_cpp 的 HttpServlet 类及服务器框架编写WEB服务器程序(系列文章)
    C编译器剖析PDF文档及UCC编译器162.3
    深入浅出NodeJS——数据通信,NET模块运行机制
    看AngularJS
    如何编写高效的jQuery代码
    Express安装入门与模版引擎ejs
    使用SeaJS实现模块化JavaScript开发
    RequireJS 入门指南
    RequireJS
  • 原文地址:https://www.cnblogs.com/tantec/p/apache-httpclient-https.html
Copyright © 2011-2022 走看看