在我的android應用程序中,我必須讀取存儲在服務器中的XML文件。由於這是一個安全的網頁[SSL(HTTPS),進入到XML文件所在的位置(https://serverAddress/path/
),通常它需要的用戶名/密碼認證Android異常(不受信任的服務器證書):https服務器驗證的XML請求
下面是我用來閱讀和獲取代碼XML流。但它試圖執行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());
}
嗨鮑里斯Strandjev,感謝您的快速反應。我經歷了這個POST,但並沒有真正知道做了什麼。沒有任何方法可以直接以簡單的方式提供證書並訪問XML? – JibW 2012-04-24 16:34:47
@JibW當我指出帖子時,我的意思是最流行的答案:http://stackoverflow.com/a/4837230/1108032。只需複製粘貼整個代碼並使用它來構建您的客戶端。我已經做了好幾次了,它總是有效的。另外,它很容易申請。 – 2012-04-25 05:04:56
嗨鮑里斯Strandjev。我只是應用它,但它仍然給這個異常[java.net.UnknownHostException]。另外我嘗試了在同一個POST中提供的HttpURLConnection方式,但是這次是另一個異常[java.net.SocketException:Permission denied]。我認爲,因爲這是一個安全的SSL證書網頁,它不允許訪問該位置來檢索Xml流沒有適當的身份驗證。 – JibW 2012-04-25 10:04:19