Hãy thử cách sau. Tôi đã thêm SSLSocketFactory để xử lý các kết nối SSL, cộng thêm nó hỗ trợ thêm cho việc xử lý nhiều kết nối đồng thời bằng cách sử dụng ThreadSafeClientConnManager. Bạn có thể xóa hết thời gian chờ của ổ cắm và thời gian chờ kết nối.
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
schemeRegistry.register(new Scheme("mxiss", SSLSocketFactory.getSocketFactory(), 443));
HttpParams params = new BasicHttpParams();
int timeoutConnection = 5000;
HttpConnectionParams.setConnectionTimeout(params, timeoutConnection);
int timeoutSocket = 10000;
HttpConnectionParams.setSoTimeout(params, timeoutSocket);
params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 30);
params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(30));
params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false);
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
_client = new DefaultHttpClient(cm, params);
Hy vọng điều này sẽ hữu ích.
Nếu khách hàng của bạn không tin tưởng chứng chỉ máy chủ đăng ký giao thức khác và chấp nhận tất cả chứng chỉ cho giao thức đó. Trước tiên bạn nên đăng ký giao thức trước khi làm bất cứ điều gì.
Protocol mxiss = new Protocol("mxiss", new EasySSLProtocolSocketFactory(), 443);
Protocol.registerProtocol("mxiss", mxiss);
Sau đó, thay vì "https" bạn phải sử dụng "mxiss"
EasySSLProtocolSocketFactory đến từ org.apache.commons.httpclient.contrib.ssl. Đặt tệp jar http://repo1.maven.org/maven2/ca/juliusdavies/not-yet-commons-ssl/0.3.11/not-yet-commons-ssl-0.3.11.jar vào đường dẫn lớp của bạn.
Giấy chứng nhận SSL có hợp lệ hoặc bạn đang sử dụng một số máy chủ dev không? –
Có lẽ http://stackoverflow.com/questions/3761737/https-get-ssl-with-android-and-self-signed-server-certificate này –
Tôi có cùng một vấn đề với bạn, bạn đã tìm thấy giải pháp làm việc cho điều này ? –