我按照here所述添加了SSLFactory和TrustManager类。
我正在建立如下连接:
//does not work
String url = "https://waprd.uark.edu/web-apps/regr/scheduleofclasses/Main?strm=1123";
//http://bektemirov.com/a/android.php?t=amurica //simple http - works
HttpClient client = new DefaultHttpClient(clientConnectionManager, params);
HttpGet get = new HttpGet(url);
try {
HttpResponse response = client.execute(get, context);
HttpEntity entity = response.getEntity();
String responseText = EntityUtils.toString(entity);
Body.setText(responseText);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
每次针对该特定链接的连接都会失败。请指引我正确的方向?
最佳答案
初始化SSLContext时,有一个参数传递TrustManager数组,您可以在其中定义自己的TrustManager以接受所有内容。下面列出了一些关键步骤:
子类SSLSocketFactory
自定义TrustManager以接受SSLSocketFactory子类中的所有证书。
使用SSLSocketFactory子类中的自定义TrustManager初始化SSLContext。
创建带有HttpParams和ClientConnectionManager的参数化DefaultHttpClient,后者使用SchemeRegistry在其中可以向SSLSocketFactory的子类注册“ https”。
这样,所有https响应都将由您自定义的TrustManager类处理。