最近发布了一个关于HttpClient过度Https 的问题(在这里找到).我已经取得了一些进展,但我遇到了新的问题.和我的上一个问题一样,我似乎无法找到适合我的任何地方的例子.基本上,我希望我的客户端接受任何证书(因为我只指向一个服务器),但我一直在接受javax.net.ssl.SSLException: Not trusted server certificate exception.
所以这就是我所拥有的:
public void connect() throws A_WHOLE_BUNCH_OF_EXCEPTIONS {
HttpPost post = new HttpPost(new URI(PROD_URL));
post.setEntity(new StringEntity(BODY));
KeyStore trusted = KeyStore.getInstance("BKS");
trusted.load(null, "".toCharArray());
SSLSocketFactory sslf = new SSLSocketFactory(trusted);
sslf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme ("https", sslf, 443));
SingleClientConnManager cm = new SingleClientConnManager(post.getParams(),
schemeRegistry);
HttpClient client = new DefaultHttpClient(cm, post.getParams());
HttpResponse result = client.execute(post);
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
W/System.err( 901): javax.net.ssl.SSLException: Not trusted server certificate
W/System.err( 901): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:360)
W/System.err( 901): …Run Code Online (Sandbox Code Playgroud) 我尝试使用Url的XML解析器读取XML数据(" https://....etc ").但我面临以下错误.这是我的日志.
04-08 16:34:23.017:WARN/System.err(8052):javax.net.ssl.SSLException:不受信任的服务器证书
04-08 16:34:23.098:WARN/System.err(8052):at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:371)
04-08 16:34:23.107:WARN/System.err(8052):at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:92)
04-08 16:34:23.107:WARN/System.err(8052):at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:381)
04-08 16:34:23.107:WARN/System.err(8052):at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:164)
04-08 16:34:23.116:WARN/System.err(8052):at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
04-08 16:34:23.116:WARN/System.err(8052):at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
04-08 16:34:23.116:WARN/System.err(8052):at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348)
04-08 16:34:23.116:WARN/System.err(8052):at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
04-08 16:34:23.127:WARN/System.err(8052):at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
04-08 16:34:23.127:WARN/System.err(8052):at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
04-08 16:34:23.127:WARN/System.err(8052):at androidexperts.apps.prontonnetworks.xmlparser.(xmlparser.java:108)
04-08 16:34:23.196:WARN/System.err(8052):at androidexperts.apps.prontonnetworks.prontonnetworks $ HandlerServer.doInBackground(prontonnetworks.java:486)
04-08 16:34:23.232:WARN/System.err(8052):at androidexperts.apps.prontonnetworks.prontonnetworks $ HandlerServer.doInBackground(prontonnetworks.java:1)
04-08 16:34:23.257:WARN/System.err(8052):在android.os.AsyncTask $ 2.call(AsyncTask.java:185)
04-08 16:34:23.287:WARN/System.err(8052):at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:305)
04-08 16:34:23.307:WARN/System.err(8052):at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-08 16:34:23.317:WARN/System.err(8052):at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
04-08 16:34:23.317:WARN/System.err(8052):at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:561)
04-08 16:34:23.317:WARN/System.err(8052):at java.lang.Thread.run(Thread.java:1096)
04-08 16:34:23.317:WARN/System.err(8052):引起:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException:找不到CertPath的TrustAnchor.04-08 16:34:23.327:WARN/System.err(8052):at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:168)
04-08 16:34:23.327:WARN/System.err(8052):at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:366)
04-08 16:34:23.337:WARN/System.err(8052):......还有18个 …