2012-03-01 4 views
1

나는 내 안드로이드 응용 프로그램 중 하나에 Jsoup를 사용하고 있으며 connection.get()을 호출 할 때 NullPointerException을 던지는 비교적 간단한 코드가 있습니다.Jsoup 던지고 NullPointerException 안드로이드 에뮬레이터의 Connection.get()에

이 기능은 몇 달 전부터 사용되었지만 최신 SDK를 설치 한 후에는 더 이상 에뮬레이터에서 작동하지 않습니다. 내 물리적 장치에서 정상적으로 작동하지만,이 버그가 에뮬레이션 버그인지 또는 다른 핸드셋에 영향을 줄 수 있는지는 알 수 없습니다.

내 코드입니다 : 내가 exception.getMessage()를 호출하면

String URL = "http://finance.google.com/finance/feeds/default/portfolios?returns=true" 
String _AUTHPARAMS = "GoogleLogin auth=" 
String AuthToken = "random string of characters" 

Connection c = Jsoup.connect(URL); 
c.header("Authorization", _AUTHPARAMS + AuthToken); 
c.userAgent("foo"); 
c.timeout(10000); 
c.ignoreContentType(true); 
Document doc = c.get(); 

내가 마지막 줄에 NullPointerException이 잡기입니다 (c.get())

, 그냥 "널 말한다 ". 안드로이드 또는 jsoup의 버그 이외의 다른 원인이 될 수 있는지 잘 모르겠습니다.

03-01 00:43:22.459: E/AndroidRuntime(392): FATAL EXCEPTION: AsyncTask #1 
03-01 00:43:22.459: E/AndroidRuntime(392): java.lang.RuntimeException: An error occured while executing doInBackground() 
03-01 00:43:22.459: E/AndroidRuntime(392): at android.os.AsyncTask$3.done(AsyncTask.java:200) 
03-01 00:43:22.459: E/AndroidRuntime(392): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
03-01 00:43:22.459: E/AndroidRuntime(392): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
03-01 00:43:22.459: E/AndroidRuntime(392): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
03-01 00:43:22.459: E/AndroidRuntime(392): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
03-01 00:43:22.459: E/AndroidRuntime(392): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) 
03-01 00:43:22.459: E/AndroidRuntime(392): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) 
03-01 00:43:22.459: E/AndroidRuntime(392): at java.lang.Thread.run(Thread.java:1096) 
03-01 00:43:22.459: E/AndroidRuntime(392): Caused by: java.lang.NullPointerException 
03-01 00:43:22.459: E/AndroidRuntime(392): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.readln(HttpURLConnectionImpl.java:1279) 
03-01 00:43:22.459: E/AndroidRuntime(392): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl$ChunkedInputStream.readChunkSize(HttpURLConnectionImpl.java:404) 
03-01 00:43:22.459: E/AndroidRuntime(392): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl$ChunkedInputStream.<init>(HttpURLConnectionImpl.java:340) 
03-01 00:43:22.459: E/AndroidRuntime(392): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getContentStream(HttpURLConnectionImpl.java:1175) 
03-01 00:43:22.459: E/AndroidRuntime(392): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequestInternal(HttpURLConnectionImpl.java:1754) 
03-01 00:43:22.459: E/AndroidRuntime(392): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.doRequest(HttpURLConnectionImpl.java:1649) 
03-01 00:43:22.459: E/AndroidRuntime(392): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:1374) 
03-01 00:43:22.459: E/AndroidRuntime(392): at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:381) 
03-01 00:43:22.459: E/AndroidRuntime(392): at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:364) 
03-01 00:43:22.459: E/AndroidRuntime(392): at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:143) 
03-01 00:43:22.459: E/AndroidRuntime(392): at org.jsoup.helper.HttpConnection.get(HttpConnection.java:132) 
03-01 00:43:22.459: E/AndroidRuntime(392): at com.karwosts.PortfolioMap.GoogleFinance.SendHttpRequest(GoogleFinance.java:138) 
03-01 00:43:22.459: E/AndroidRuntime(392): at com.karwosts.PortfolioMap.GoogleFinance.getDocument(GoogleFinance.java:78) 
03-01 00:43:22.459: E/AndroidRuntime(392): at com.karwosts.PortfolioMap.GoogleFinance.GetPortfolioList(GoogleFinance.java:36) 
03-01 00:43:22.459: E/AndroidRuntime(392): at com.karwosts.PortfolioMap.GooglePortfolioSelector$AsyncPortfolioRetriever.doInBackground(GooglePortfolioSelector.java:134) 
03-01 00:43:22.459: E/AndroidRuntime(392): at com.karwosts.PortfolioMap.GooglePortfolioSelector$AsyncPortfolioRetriever.doInBackground(GooglePortfolioSelector.java:1) 
03-01 00:43:22.459: E/AndroidRuntime(392): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
03-01 00:43:22.459: E/AndroidRuntime(392): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
03-01 00:43:22.459: E/AndroidRuntime(392): ... 4 more 
+0

사용중인 JSoup의 스택 추적 및 버전을 연결 하시겠습니까? – Jens

+0

@Jens 정보가 게시되었습니다. 감사합니다. – Tim

답변

0

:

======= 내가 Jsoup 1.6.1

사용하고

편집 ======== 다음은 일식에서 스택 추적입니다 귀하의 스택 추적에서 나는 당신이 안드로이드 2.1 (또는 다른 "오래된"버전)이 bug (15554)을 만난 것 같아요 - 당신은 아파치 HTTP 클라이언트를 사용하여 문서를 다운로드 할 수 있어야합니다 - 이전 안드로이드 구현에서 더 잘 작동합니다 (이후 HttpURLConnection/똥의 버그 조각).

+0

동일한 버그 (광산이 유선 이더넷 연결 2.2에 있음)인지는 모르겠지만 어쨌든 귀하의 조언을 받아서 Apache HttpClient로 바꾸면 작동하는 것 같습니다. 제안 해 주셔서 감사합니다. – Tim

+0

글쎄, Google은 [HttpURLConnection] (http://android-developers.blogspot.com/2011/09/androids-http-clients.html) 3.0 이상을 권장하지만, 2.x 버전에서는 버그가 있습니다. – Jens

관련 문제