以前,我使用HttpClient作为http post请求,它运行正常,直到我相信服务器团队做了一些更改。然后我不断得到 javax.net.ssl.SSLPeerUnverifiedException:没有对等证书异常。
然后,在经过多次刮擦之后,我尝试了HttpUrlConnection并且工作正常,但我仍然无法弄清楚为什么我在使用HttpClient时会遇到异常。
在代码之前:
public String postDataAndGetStringResponse( List<NameValuePair> nameValuePairs ) {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost( link );
try {
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = client.execute(post);
InputStream is = response.getEntity().getContent();
String result = "";
if (is != null) {
BufferedReader reader = new BufferedReader(
new InputStreamReader(is));
String l = "";
while ((l = reader.readLine()) != null) {
result += l;
}
reader.close();
}
is.close();
return result;
} catch (Exception e) {
Logger.printStackTrace(e);
return ServerUnrechable;
}
}
我确实使用https://www.sslshopper.com检查了服务器,所有内容都已勾选,如果有人能告诉我这个问题的原因,那将非常有用。
答案 0 :(得分:0)
最可能的原因之一是您现在尝试使用的服务器依赖于服务器名称指示。
SNI支持在Android中添加了HttpsURLConnection
,但没有添加到捆绑的Apache HTTP Client(现已弃用/删除)。有关详细信息,请参阅this related question。