1

在我的 android 应用程序中,我必须读取存储在服务器中的 XML 文件。由于这是一个安全的网页 [SSL(https)],要访问https://serverAddress/path/XML 文件所在的位置(),通常需要用户名/密码验证

以下是我用来阅读和获取 XML 流的代码。但是它在尝试执行HttpResponse httpResponse = httpClient.execute(httpGet);语句时总是会出现异常。异常说Not trusted server certificate

<uses-permission android:name="android.permission.INTERNET" />还在Manifest 文件中添加了 Internet 访问权限

如果 XML 文件存储在不需要任何身份验证的地方,那么它可以正常工作。我到处搜索,但没有找到任何可以做到这一点的例子。如果有人可以指导这个过程,我将不胜感激。提前致谢...!!!!

   try
   {
         Log.v("State","Started...");

         HttpClient httpClient = new DefaultHttpClient();
         HttpGet httpGet = new HttpGet("https://serverAddress/path/MyXMLFile.xml");
         httpGet.addHeader(BasicScheme.authenticate(new UsernamePasswordCredentials("username", "password"),HTTP.UTF_8, false));
         HttpResponse httpResponse = httpClient.execute(httpGet);
         InputStream xmlInputStream = httpResponse.getEntity().getContent();
         Toast.makeText(getApplicationContext(), this.convertStreamToString(xmlInputStream), Toast.LENGTH_LONG).show();

         Log.v("State","Finish...");
    }
    catch(Exception e)
    {
        Log.v("State",e.getMessage().toString());
    }
4

1 回答 1

1

这不是http问题https- 您正在使用安全连接。我也遇到了很多麻烦。作为一个快速修复,您可以使用这个不可替代的帖子让您的客户信任所有证书。

稍后考虑只信任适当的证书。

编辑:因为我知道 SO 用户有多挑剔。是的,信任所有证书是不好的做法,但这可以在 3 分钟内完成,并且您可以测试其余代码。永远不要忘记这是潜在的安全漏洞,您应该切换到只信任指定的证书。

于 2012-04-24T11:15:48.107 回答