HttpClient 抛出 ssl 错误,但 webview 和 HttpsURLConnection 不会
Posted
技术标签:
【中文标题】HttpClient 抛出 ssl 错误,但 webview 和 HttpsURLConnection 不会【英文标题】:HttpClient throws ssl error but webview and HttpsURLConnection don't 【发布时间】:2017-08-22 18:23:04 【问题描述】:所以我使用服务器 (google-app-engine) 在客户端应用程序上进行身份验证。 当我使用 JavaFX Webview 或 HttpsURLConnection 时一切正常并且它们连接但是当我使用 HttpClient 时它会引发以下错误
javax.net.ssl.SSLPeerUnverifiedException:对等体未通过身份验证 在 sun.security.ssl.SSLSessionImpl.getPeerCertificates(未知来源) 在 org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128) 在 org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:339) 在 org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:123) 在 org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:147) 在 org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108) 在 org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415) 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641) 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576) 在 org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
完整的 ssl 报告是 here
我正在使用的代码
System.out.println("I started");
String https_url = "https://app.quagrum.com";
URL url;
try
url = new URL(https_url);
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();//Works
System.out.println("I ran?");
catch(Exception a)
try
HttpGet get = new HttpGet("https://app.quagrum.com");
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(get);//Throws error
System.out.println(response.getStatusLine().getStatusCode());
if(response.getStatusLine().getStatusCode()!=200)
HttpEntity entity = response.getEntity();
if (entity != null)
InputStream instream = entity.getContent();
try
Scanner s = new Scanner(instream).useDelimiter("\\A");
String result = s.hasNext() ? s.next() : "";
System.out.println(result);
result =result.substring(result.indexOf("\"",7));
result=result.substring(0, result.indexOf("\""));
System.out.println(result);
finally
instream.close();
catch(Exception a)
a.printStackTrace();
【问题讨论】:
【参考方案1】:现在它可以正常工作了。没关系,java 让我完全重新设计程序的一部分,然后让它在以后的版本中工作
【讨论】:
以上是关于HttpClient 抛出 ssl 错误,但 webview 和 HttpsURLConnection 不会的主要内容,如果未能解决你的问题,请参考以下文章
Apache HttpClient 能够在 DIRECT 时通过 HTTPS 进行通信,但不能通过 PROXY 错误:javax.net.ssl.SSLPeerUnverifiedException:
找不到 SSL 证书的 Java HttpClient 错误,在代码中使用证书作为字符串?