【发布时间】:2017-02-20 23:48:16
【问题描述】:
我有以下代码:
AsyncTask asyncTask = new AsyncTask() {
@Override
protected Object doInBackground(Object[] params) {
try {
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
DefaultHttpClient client = new DefaultHttpClient();
SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
registry.register(new Scheme("https", socketFactory, 443));
SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());
// Set verifier
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
// Example send http request
final String url = "https://192.168.1.13:8090/version";
HttpPost httpPost = new HttpPost(url);
HttpResponse response = httpClient.execute(httpPost);
Log.i("","response is:" + response);
}catch (Exception e){
Log.e("","error trying to get:" + e.getMessage());
}
return null;
}
};
asyncTask.execute();
我遇到以下问题:
10-12 10:53:37.546: E/(24916): error trying to get:No peer certificate
10-12 10:53:38.890: E/Finsky(18904): [1] com.google.android.vending.verifier.ah.a(713): Verification id=44 error response com.android.volley.NoConnectionError: java.net.UnknownHostException: Unable to resolve host "safebrowsing.google.com": No address associated with hostname
我做错了什么?
【问题讨论】:
-
Connection .. refused表明您的服务器已关闭。它真的在监听 8090 端口吗?是正确的IP地址吗?是否有任何 SW 防火墙阻止连接?最后,如果它是开发服务器(PHP、Python),通常绑定到 127.0.0.1,所以连接必须是本地的,如果它们来自不同的机器或 IF,则会失败。是这样吗? -
我确实设法克服了这一点。但现在我得到一个没有对等证书错误。
-
您使用的是哪种服务器?看起来您的连接是纯 HTTP,没有 SSL/TLS 加密。
-
192.168.1.13 是一个视频会议摄像机,我需要给它打个电话,以获取版本并连接。当我拨打这个电话时,我还获得了一个我需要信任的自签名证书
-
您是否尝试使用 Android 设备中的某些浏览器打开与 192.168.1.13:8090/version 的连接?结果是什么?另外,它提供了哪些关于证书的信息?
标签: android ssl connection certificate self-signed