2011-03-06 4 views
4

저는 Android 용 Lovefilm 클라이언트를 작성하고 있습니다. API에서 데이터를 검색하는 원격 호출에 계속 문제가있는 것을 제외하고는 너무 나쁘지 않습니다.Android 기기에서 http 통화를 디버깅하는 방법은 무엇입니까?

누구나 이와 같은 원격 통화 디버깅을위한 조언이 있습니까? Android에서 tcpdump 할 수 있나요? 아니면 기본 방식으로 할 수 있습니까?

예를 들어, Lovefilm API에 액세스하기 위해 OAuth 용 Scribe-java 라이브러리를 사용하고 있습니다. 기기가 진저 브레드를 실행하고 있지만 검색하려고 시도 할 때 사용자 계정에서 영화 목록을 찾아서 검색 할 수 있습니다. Froyo의 accessToken은 공백 응답 &과 명백한 응답 코드 -1을 발생시킵니다. 나는 cvers 아래에서 무슨 일이 벌어지고 있는지보고 싶습니다.

내가 말했다 검색, 내가 얻을 IO 오류를 실행하려고에 대한 원시 HTTP 수 있도록하고 싶습니다 또 다른 예 "수신 된 인증 요청은 null입니다"

답변

3

이러한 경우에는 android 에뮬레이터를 사용하여 http 호출을 디버깅 할 수 있습니다. 그냥 프록시를 시작하고 올바른 프록시 주소 (-http-proxy)로 에뮬레이터를 시작하십시오.

1

시스템이 공유 할 수있는 경우 wi-fi 연결을 사용하면 어떤 장치에서든 시스템을 통해 패킷을 라우팅 한 다음 wireshark를 사용하여 호출을 모니터링하거나 tcpdump를 얻을 수 있습니다. 당신이 당신의 네트워크 호출과 응답을 로그인하는 경우 @Matthew

에 의해 제안

또한

, 그리고 더 중요한 것은 가장 좋은 것입니다

윈도우 7 와이파이 연결 공유 : 내가 피들러 (사용했습니다 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 Client에서 프록시를 설정해야합니다. 다음 코드는이를 수행합니다 :

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); 

참고 이것은 java.util.logging의 Handler 최고 수준에서 구성을 가지고있을 것이라는 점과 기본 핸들러는 logcat에 로그하도록 구성되며, 기본적으로 DEBUG (최고급) 항목을 필터링합니다.

0

나는 항상 비슷한 문제를 겪기 때문에 똑같은 문제가 계속 반복되는 사람들이 많아서 나는 빨리 썼다. tutorial for debugging client-server communication by using netcat and cURL.

당연히 연결의 측면에서 항상 '가짜'라는 단순화 된 경우에만 작동합니다.

도청의 경우 tcpdump 또는 Wireshark과 같은 도구를 사용할 수 있습니다. 로컬 컴퓨터에서 직접 서버 인스턴스를 실행할 수 있다면 분명 쉽습니다.

0

Stetho는 Android에서 디버깅하는 데 유용한 FB의 훌륭한 도구입니다.로컬 데이터에 액세스하여이를 사용하여 네트워크를 확인할 수 있습니다.

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

관련 문제