浏览 3266 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2015-04-02
但是在生产环境上,用这种方法,就报javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated。 很怪异。 源码: public String getHtml(String url, String endcoding) throws Exception { String htmlCode=null; HttpClient httpClient = new DefaultHttpClient(); // 创建默认的httpClient实例 X509TrustManager xtm = new X509TrustManager() { // 创建TrustManager public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }; try { // TLS1.0与SSL3.0基本上没有太大的差别,可粗略理解为TLS是SSL的继承者,但它们使用的是相同的SSLContext SSLContext ctx = SSLContext.getInstance("TLS"); // 使用TrustManager来初始化该上下文,TrustManager只是被SSL的Socket所使用 ctx.init(null, new TrustManager[] { xtm }, null); // 创建SSLSocketFactory //ALLOW_ALL_HOSTNAME_VERIFIER(可以有IP、域名、机器名,其中之一符合就可以) SSLSocketFactory socketFactory = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); // 通过SchemeRegistry将SSLSocketFactory注册到我们的HttpClient上 httpClient.getConnectionManager().getSchemeRegistry() .register(new Scheme("https", 443, socketFactory)); httpClient.getParams().setParameter( HttpMethodParams.HTTP_CONTENT_CHARSET, endcoding); // 创建HttpGet方法的实例 HttpGet httpGet = new HttpGet(url); // 创建HttpPost HttpResponse response = httpClient.execute(httpGet); // 执行 if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK ) { // 读取内容 HttpEntity entity = response.getEntity(); // 获取响应实体 if (null != entity) { htmlCode = EntityUtils.toString(entity, "UTF-8"); } } } catch (Exception e) { e.printStackTrace(); throw new Exception("认证失败,原因:[认证系统异常]."); } finally { // 释放连接 releaseSource(httpGet,null,httpClient); // 关闭连接,释放资源 } return htmlCode; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2015-04-08
我参考网上部分文档写了一个无需生成证书即可直接通过https请求的工具jar包,依赖于httpClient
|
|
返回顶楼 | |
发表时间:2015-05-20
小鱼不爱水 写道 我参考网上部分文档写了一个无需生成证书即可直接通过https请求的工具jar包,依赖于httpClient
贴部分主要代码我看看可否 |
|
返回顶楼 | |
发表时间:2015-05-26
y812300477 写道 小鱼不爱水 写道 我参考网上部分文档写了一个无需生成证书即可直接通过https请求的工具jar包,依赖于httpClient
贴部分主要代码我看看可否 |
|
返回顶楼 | |