在我的Android应用程序中,我必须读取存储在服务器中的XML文件。由于这是一个安全的网页[SSL(https)],要访问XML文件所在的位置(https://serverAddress/path/
),通常需要用户名/密码验证
以下是我用来阅读和获取XML Stream的代码。但是当它试图执行HttpResponse httpResponse = httpClient.execute(httpGet);
语句时总是会出现异常。例外情况Not trusted server certificate
。
还在清单文件中添加了互联网访问权限<uses-permission android:name="android.permission.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());
}
答案 0 :(得分:1)
这不是http
问题https
- 您正在使用安全连接。我也遇到了很多麻烦。作为快速解决方案,您可以使用此irreplaceable post让您的客户信任所有证书。
稍后考虑只信任相应的证书。
编辑:因为我知道SO用户是多么挑剔。是的,信任所有证书是不好的做法,但这可以在3分钟内完成,您可以测试其余的代码。仍然永远不会忘记这是潜在的安全漏洞,你应该转而只信任指定的证书。