2012-03-01 48 views
1

我使用Jsoup为我的Android应用程序之一,我有一个比较简单的一段代码,不断抛出的NullPointerException当我打电话connection.get()。Jsoup在安卓上Connection.get抛出NullPointerException异常()模拟器

这用来工作一两个月回来,但安装最新的SDK后,不再在模拟器中工作。它在我的物理设备上工作正常,但我不知道这是否只是一个模拟错误或可能影响其他手机。

这是我的代码:

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

如果我叫exception.getMessage(),它只是说“空”。我不确定除了android或jsoup中的错误之外,还有什么可能导致这种情况?

=======编辑========

我使用Jsoup 1.6.1

下面是从日食堆栈跟踪:

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 2012-03-01 08:32:00

+0

@Jens信息添加到帖子,谢谢。 – Tim 2012-03-01 08:56:10

回答

0

从您的堆栈跟踪我猜你在Android 2.1(或其他的“旧”版本)遇到此bug (15554) - 你应该能够下载使用Apache HTTP客户端的文件 - 这更好的工作了很多较旧的Android实现(因为HttpURLConnection是/是狗屎)。

+0

不知道如果相同的错误(我是在2.2有线以太网连接),但我还是把你的意见反正与Apache HttpClient的替代,它似乎工作。感谢您的建议。 – Tim 2012-03-01 19:20:26

+0

那么,谷歌[推荐HttpURLConnection类](http://android-developers.blogspot.com/2011/09/androids-http-clients.html)3.0及更高版本,但它是一种在2.X版本的越野车。 – Jens 2012-03-02 07:38:34

相关问题