2011-09-14 21 views
0

我想解析一個Android應用程序內的XML響應。解析自身的技術並不是問題,但接收XML的過程使得難以按照常規方式進行解析。如何告訴android解析iam重定向到的頁面的XML響應?

更詳細地: 我請求的XHTML網站與Apache HttpClient的(Android中)。該網站位於Java EE應用服務器(AS)上。我用請求(用戶名,密碼)給出兩個GET參數。

網站位於在一個安全的區域,所以首先在AS轉發我到登錄頁面。登錄頁面將使用用戶名和密碼(來自GET參數)並自動登錄。如果登錄憑證有效,我將重定向到所請求的XHTML頁面。這是我想用android SAX解析器解析的網站。

但是,當我嘗試這樣做,我能夠解析唯一respose是登錄頁面,而不是頁面。我被重定向到成功登錄後。任何人都可以告訴我如何指示android apache http客戶端在自動登錄過程後採取重定向頁面的響應(以便解析)?

回答

0

的登錄用戶被存儲在由一個cookie中標識的名稱JSESSIONID HTTP會話。您需要確保您將所獲取的cookie傳遞給每個後續請求,也包括重定向。否則,服務器會將重定向的請求視爲未經授權,並將您重新導向到登錄頁面。

管理獲得Cookie可以與您需要在HttpContext你又需要通過對每一HttpClient#execute()調用設置CookieStore的幫助下完成的。

HttpClient httpClient = new DefaultHttpClient(); 
CookieStore cookieStore = new BasicCookieStore(); 
HttpContext httpContext = new BasicHttpContext(); 
httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore); 
// ... 

HttpResponse response1 = httpClient.execute(yourMethod1, httpContext); 
// ... 

HttpResponse response2 = httpClient.execute(yourMethod2, httpContext); 
// ... 
+0

感謝您的回答。 – Lars

+0

我的確如你所說,但每一個進一步的請求都會讓我回到登錄頁面。響應始終是login.jsp的佈局。 我調試了該項目,看到有一個cookie與sessionID一起存儲,但它接縫的驗證方法不起作用。 「通過cookies重定向」是什麼意思? Iam被服務器重定向,所以在這一刻如何傳遞cookie? – Lars