2010-08-03 107 views
9

我需要了解我的項目在Android上使用Web服務的情況。我知道沒有XML-RPC Web服務的官方庫。Android - 使用HTTP GET讀取XML文件

但有REST XML,我需要測試它。

我想通過HTTP GET從我的網頁上讀取XML(我必須通過用戶名和密碼)。

OR

想,我跟着This link,然後我在哪裏可以通過用戶名和密碼?

任何人都可以幫助我做到這一點。

+0

請問用戶名和密碼是怎麼樣的?如果是HTTP Basic Auth,那麼HttpClient庫支持這個,你可以添加Gianni的代碼。 – Nick 2010-08-04 21:00:41

回答

12
HttpGet uri = new HttpGet("http://example.com");  

DefaultHttpClient client = new DefaultHttpClient(); 
HttpResponse resp = client.execute(uri); 

StatusLine status = resp.getStatusLine(); 
if (status.getStatusCode() != 200) { 
    Log.d(tag, "HTTP error, invalid server status code: " + resp.getStatusLine()); 
} 

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
Document doc = builder.parse(resp.getEntity().getContent()); 
+0

不要忘了關閉你的HTTP請求! resp.getEntity()。consumeContent() - 只有在XML解析沒有完全讀取文件的情況下才需要這樣做,所以在某種形式的finally塊中。 – Nick 2010-08-04 20:57:20

+0

@尼克耶!實際上,這只是我運行的更大代碼的一小部分。我剛拿了相關部分開始。 – Gianni 2010-08-04 21:37:58

+0

酷豆 - 這只是HTTP請求中的常見錯誤,所以我想我會提及它爲大家的利益。就我個人而言,我喜歡使用帶有ResponseHandler的execute()方法,因爲它們保證在處理程序被調用後所有內容都被釋放。 – Nick 2010-08-04 22:07:16

2

此鏈接幫助我開始瞭解如何使用SAX解析器進行HTTP GET XML和解析。

http://www.anddev.org/parsing_xml_from_the_net_-_using_the_saxparser-t353.html

希望這有助於爲HTTP基本驗證碼

ITOM

+0

@iTom ...我已經閱讀過這篇文章....但是我該如何傳遞「用戶名」和「密碼」的值..... btw thanx – 2010-08-03 09:35:23

+1

通過GET請求,表單值通常會附加到URI請求,而不是張貼 即 http://www.example.com/webservice.php?username=iTom&password=MyPassword 希望有所幫助,iTom – iTom 2010-08-03 09:46:01

+0

哦,如果你的一個函數構建GET請求的URI之後,那麼這篇文章可能也幫助.. http://www.anddev.org/doing_http_post_with_android-t492.html – iTom 2010-08-03 09:56:04

1

幾行,如果你的意思是這一點。

String auth = Base64Converter.encode(String.format("%s:%s", user, pass)); 
URL u = new URL(url); 
conn = (HttpsURLConnection) u.openConnection(); 
conn.addRequestProperty("Authorization", "Basic " + auth); 

其中「Base64Converter」是一個工具類將字符串轉換爲其Base64編譯形式。 在parsingxml.java,第36行的openConnection()調用之前執行此操作。

+0

我認爲這可以幫助我...讓我試試...給你的答覆,如果運行..支持 – 2010-08-04 05:07:05

+0

Base64Converter不支持在Android..showing紅線下(錯誤)的Base64Converter – 2010-08-04 09:03:58

+0

@Paresh是的Base64Converter是一個我在其他地方找到的公共領域工具類。谷歌搜索可能會讓你找到合適的地方。 Android意味着提供了一個Base64編碼器/解碼器類,但實際上不適用於應用程序開發人員。 – Ryan 2010-08-09 12:23:28