2012-04-24 93 views
1

在我的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()); 
    } 

回答

1

這不是http問題是https - 您使用安全連接。我也遇到了很多麻煩。作爲一個快速解決方案,您可以讓您的客戶信任使用此irreplaceable post的所有證書。

稍後考慮只信任相應的證書。

編輯:因爲我知道如何挑剔因此用戶。是的,信任所有證書是不好的做法,但這可以在3分鐘內完成,您可以測試其餘的代碼。不要忘記這是潛在的安全漏洞,你應該切換到只信任指定的證書。

+0

嗨鮑里斯Strandjev,感謝您的快速反應。我經歷了這個POST,但並沒有真正知道做了什麼。沒有任何方法可以直接以簡單的方式提供證書並訪問XML? – JibW 2012-04-24 16:34:47

+1

@JibW當我指出帖子時,我的意思是最流行的答案:http://stackoverflow.com/a/4837230/1108032。只需複製粘貼整個代碼並使用它來構建您的客戶端。我已經做了好幾次了,它總是有效的。另外,它很容易申請。 – 2012-04-25 05:04:56

+0

嗨鮑里斯Strandjev。我只是應用它,但它仍然給這個異常[java.net.UnknownHostException]。另外我嘗試了在同一個POST中提供的HttpURLConnection方式,但是這次是另一個異常[java.net.SocketException:Permission denied]。我認爲,因爲這是一個安全的SSL證書網頁,它不允許訪問該位置來檢索Xml流沒有適當的身份驗證。 – JibW 2012-04-25 10:04:19

相關問題