2011-03-06 54 views
4

我正在爲Android編寫一個Lovefilm客戶端,它不會太糟糕,除非我一直有遠程調用從API檢索數據的問題。如何在Android設備上調試http調用?

有沒有人有調試這樣的遠程調用的任何提示?我可以在Android上進行tcpdump嗎?或者有一種本地方式嗎?

例如,我使用Scribe-java庫進行OAuth訪問Lovefilm API,我可以在設備運行Gingerbread時驗證用戶帳戶中的電影列表並檢索電影列表,但是嘗試檢索Froyo上的accessToken導致一個空白響應&和明顯的響應代碼-1,我希望能夠看到它們下面發生了什麼。

又如我想能夠將原始的HTTP的嘗試運行搜索,我得到和IO錯誤,說:「已收到認證挑戰是空

回答

3

我用菲德勒( http-proxy用於調試http調用)與android模擬器在這些情況下。只需啓動代理,並使用正確的代理地址(-http-proxy)啓動模擬器。

1

如果您的系統可以共享Wi-Fi連接,你應該能夠通過你的系統從任何設備路由數據包,然後使用wireshark你可以監控你的電話或獲得一個tcpdump。

而且,更重要的是,如果你登錄你的網絡調用和響應這將是最好的@Matthew

的建議

Windows 7中的Wi-Fi連接共享:http://www.winsupersite.com/article/faqtip/windows-7-tip-of-the-week-use-wireless-hosted-networking-to-share-an-internet-connection-wirelessly.aspx

3

提琴手是最有用的選擇。在模擬器上@Scythe答案的工作,但在真實設備上,你將需要設置在Apache HTTP客戶端代理。下面的代碼將做到這一點:

HttpHost proxy = new HttpHost("youripaddr", 8888); 
params.setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 

如果您使用的是https,fiddler不是很有用。在這種情況下,可以啓用Apache Http Client中的日誌支持。下面的代碼做的是:

僅標題:

java.util.logging.Logger apacheHeaderLog = java.util.logging.Logger.getLogger("org.apache.http.headers");  
apacheHeaderLog.setLevel(java.util.logging.Level.FINEST); 

頁眉&線:

java.util.logging.Logger apacheWireLog = java.util.logging.Logger.getLogger("org.apache.http.wire"); 
apacheWireLog.setLevel(java.util.logging.Level.FINEST); 

注意,這將必須有Handler配置在最好的水平的java.util.logging和默認處理程序被配置爲登錄到logcat,默認情況下它將過濾DEBUG(最好)條目。

0

Stetho是從FB一個偉大的工具,它可以幫助調試Android應用。您可以訪問本地數據並使用它檢查您的網絡。

http://facebook.github.io/stetho/

相關問題