我按照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类处理。

09-03 23:56