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);
    	}
    
  • 相关阅读:
    邻接表怎么写
    hiho一下 第二十五周(SPFA)
    hdu 1426 Sudoku Killer(DFS)
    hdu5147 (sequence 2) 树状数组
    hdu1233 prim
    输入输出外挂
    RMQ-ST求区间最值
    最近公共祖先(简单版)
    【Java】【20】后台发送GET/POST方法
    【实战问题】【11】导入Maven项目后报错,Project configuration is not up-to-date with pom.xml. Run project configuration update
  • 原文地址:https://www.cnblogs.com/tantec/p/apache-httpclient-https.html
Copyright © 2011-2022 走看看