0
懷疑我試圖聯繫HTTPS服務器用下面的代碼:Android的HTTPS請求,在正確使用
HttpResponse response = new DefaultHttpClient().execute(new HttpGet("https://www.google.com"));
和它完美的作品(它返回谷歌網頁和狀態碼200 OK)。
我也試着用下面的一個來聯繫同一服務器:
BasicHttpParams clientparams = new BasicHttpParams();
[... clientparams initializazion...]
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
SSLSocketFactory sf = SSLSocketFactory.getSocketFactory();
sf.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
schemeRegistry.register(new Scheme("https", sf, 443));
ClientConnectionManager cm = new ThreadSafeClientConnManager(clientparams, schemeRegistry);
HttpClient myClient = new DefaultHttpClient(cm, clientparams);
HttpResponse response = myClient.execute(new HttpGet("https://www.google.com"));
,這也完美的作品。我也嘗試過與其他服務器一起工作。
然後,當我需要使用SchemeRegistry來初始化一個http客戶端時,有人可以向我解釋嗎?而且,在哪些情況下,需要使用自定義KeyStore初始化SSLSocketFactory?