-
java中的httpclient的SSL出错5
我直接下载最新版的httpclient,直接复制的示例中的代码,只是把网址换成我自己想要的网址.并且,在我电脑中,在办公室服务器里测试都通过,但上传上机房服务器里面就出错了.
java代码public void login() { try { //初始化 httpclient DefaultHttpClient httpclient = new DefaultHttpClient(); //设置证书 httpclient.getConnectionManager().getSchemeRegistry().register(sch); String url = "login.jsp"; HttpPost httpost = new HttpPost(url); print("准备登陆网站,网址:"+url); List <NameValuePair> nvps = new ArrayList <NameValuePair>(); nvps.add(new BasicNameValuePair("actionName", "login")); nvps.add(new BasicNameValuePair("login_password", "11")); nvps.add(new BasicNameValuePair("login_user", "111")); httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); HttpResponse response = httpclient.execute(httpost); String statusLine = response.getStatusLine().toString(); print("得到网页打开状态"+statusLine); if(statusLine.equals("HTTP/1.1 200 OK")) { } } } /* * 设置SSL证书 */ public void setSSL() { try { KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); String p = System.getProperty("user.dir")+"/my.key"; print(p); FileInputStream instream = new FileInputStream(new File(p)); try { trustStore.load(instream, "123456".toCharArray()); }catch(Exception e) { e.printStackTrace(); } finally { instream.close(); } SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore); sch = new Scheme("https", socketFactory, 443); } catch(Exception e) { e.printStackTrace(); } }
程序出错提示javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:371) at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128) at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:399) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:143) at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149) at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554) at login(login.java:89)
2011年2月15日 13:40
1个答案 按时间排序 按投票排序
-
采纳的答案
referenced this link
http://theskeleton.wordpress.com/2010/07/24/avoiding-the-javax-net-ssl-sslpeerunverifiedexception-peer-not-authenticated-with-httpclient/
The following class takes a HttpClient and returns a new HttpClient that accepts any SSL certificate:
01 public class WebClientDevWrapper {
02
03 public static HttpClient wrapClient(HttpClient base) {
04 try {
05 SSLContext ctx = SSLContext.getInstance("TLS");
06 X509TrustManager tm = new X509TrustManager() {
07
08 public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException {
09 }
10
11 public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException {
12 }
13
14 public X509Certificate[] getAcceptedIssuers() {
15 return null;
16 }
17 };
18 ctx.init(null, new TrustManager[]{tm}, null);
19 SSLSocketFactory ssf = new SSLSocketFactory(ctx);
20 ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
21 ClientConnectionManager ccm = base.getConnectionManager();
22 SchemeRegistry sr = ccm.getSchemeRegistry();
23 sr.register(new Scheme("https", ssf, 443));
24 return new DefaultHttpClient(ccm, base.getParams());
25 } catch (Exception ex) {
26 ex.printStackTrace();
27 return null;
28 }
29 }
30 }
You can then do something like this in the code that creates the HttpClient:
1 this.client = new DefaultHttpClient();
2 if(dev) {
3 this.client = WebClientDevWrapper.wrapClient(client);
4 }
referenced this link
http://theskeleton.wordpress.com/2010/07/24/avoiding-the-javax-net-ssl-sslpeerunverifiedexception-peer-not-authenticated-with-httpclient/2011年2月15日 17:45
相关推荐
java_HttpClient学习,和解析htmljava_HttpClient学习,和解析html java_HttpClient学习,和解析htmljava_HttpClient学习,和解析html java_HttpClient学习,和解析htmljava_HttpClient学习,和解析html java_...
java SSL HttpClient。java 通过ssl去访问服务器(tomcat)
JAVA利用HttpClient进行HTTPS接口调用
主要介绍了java 中HttpClient传输xml字符串实例详解的相关资料,需要的朋友可以参考下
Java中Httpclient需要的jar包(httpclient.jar,httpcore.jar及commons-logging.jar)
Eclipse下完整的java程序,包含HttpClient的全部jar包。通过java类文件,实现通过链接将文件下载本地
httpclient常用封装工具 doGet(String url, Map, String> param) doPost(String url, Map, String> param) doPostJson(String url, String json)
主要介绍了.NET Core 使用HttpClient SSL请求出错的解决办法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
http远程接口调用-httpClient+跳过SSL证书校验. 里面分别有3个httpClient的工具类代码。 还有一个专门为了跳过SSL证书校验的工具类。
1.高效简单池化的HttpClient工具类,提供单元测试用列。 2.支持基于SpringBoot 2.1.x的自动装载模块,引用依赖即可使用。 3.公司几十个项目都使用该工具类访问第三方的Http/Https+json协议接口。 4.经过上市公司多个...
httpclient工具包,版本是java_httpclient-4.2.5.jar,java_httpcore-4.4.4.jar
为帮助java初学者,我特意整理了一下用java实现httpClient的相关代码,其中包括客户端请求https服务器,直接解压放在eclipse即可查看运行,希望对想了解这方面的童鞋有帮助。
模拟登录 不提供用户名密码
(完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc
NULL 博文链接:https://piranha.iteye.com/blog/2119924
使用HttpClient4.5实现https请求忽略SSL证书验证工具类
用java实现httpclient请求的类
主要介绍了java实现HttpClient异步请求资源的方法,实例分析了java基于http协议实现异步请求的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。
java代码-使用java解决HttpClientUtil的源代码 ——学习参考资料:仅用于个人学习使用!