綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[求助] 急~救命呀!!Android>4.0,http抓資料出現的錯誤

[複製連結] 查看: 3217|回覆: 2|好評: 0
跳轉到指定樓層
樓主
andony5168 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2014-2-23 17:11

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
我有以下這段抓取網頁的程式,在Android 2.33以下的模擬器run是正常的,但在4.x的手機上run就會錯誤,網路上找好久,都說Android 3.0以上必須用執行緒的寫法才不會出錯。但是我寫了好幾個版本還是會錯,想請教應該怎麼寫?

public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
......
String WebURL = "http://rate.bot.com.tw/Pages/Static/UIP003.zh-TW.htm";//要抓的網站
......
String urlData = null;//起始值
urlData = GetURLDate();
Parser(urlData);//解析抓下來資料的子程式
......
}
public String GetURLDate(){
                String urlData = null;
                try{
                        HttpURLConnection hc = null;                               
                        URL url = new URL(WebURL);
                        hc = (HttpURLConnection)url.openConnection();
                        hc.setDoInput(true);
                        hc.setDoOutput(true);                                               
                        hc.connect();
                        BufferedReader in = new BufferedReader(new InputStreamReader(hc.getInputStream()));
                        String decodedString;
                        while ((decodedString = in.readLine()) != null) {
                                urlData += decodedString;
                        }
                        in.close();
                }
                catch(Exception e){
                        Log.e("ERROR", e.toString());
                }
                return urlData;               
        }

錯誤的log如下:
2-22 16:14:30.583: D/dalvikvm(13618): threadid=9: interp stack at 0x4c26e000
02-22 16:14:30.584: D/dalvikvm(13618): threadid=10: interp stack at 0x4c276000
02-22 16:14:30.589: D/jdwp(13618): sendBufferedRequest : len=0x41
02-22 16:14:30.590: D/dalvikvm(13618): threadid=11: interp stack at 0x4ca7e000
02-22 16:14:30.609: D/ActivityThread(13618): BIND_APPLICATION handled : 0 / AppBindData{appInfo=ApplicationInfo{4186bb60 ncu.bnlab.OnlineMoney}}
02-22 16:14:30.636: I/System.out(13618): initHttpEngine: implies a POST method
02-22 16:14:30.638: D/libc-netbsd(13618): getaddrinfo: rate.bot.com.tw  return error = 0X8 >>
02-22 16:14:30.643: D/libc-netbsd(13618): getaddrinfo: rate.bot.com.tw get result from proxy >>
02-22 16:14:30.644: I/System.out(13618): [socket][0] connection rate.bot.com.tw/103.21.63.12:80;LocalPort=49579(0)
02-22 16:14:30.644: I/System.out(13618): [CDS]connect[rate.bot.com.tw/103.21.63.12:80] tm:90
02-22 16:14:30.645: D/Posix(13618): [Posix_connect Debug]Process ncu.bnlab.OnlineMoney :80
02-22 16:14:30.714: I/System.out(13618): [socket][/192.168.0.102:49579]
02-22 16:14:30.714: I/System.out(13618): rx timeout:0
02-22 16:14:30.816: E/ERROR(13618): java.io.FileNotFoundException: http://rate.bot.com.tw/Pages/Static/UIP003.zh-TW.htm
02-22 16:14:30.817: D/AndroidRuntime(13618): Shutting down VM
02-22 16:14:30.818: W/dalvikvm(13618): threadid=1: thread exiting with uncaught exception (group=0x40f50258)
02-22 16:14:30.820: E/AndroidRuntime(13618): FATAL EXCEPTION: main
02-22 16:14:30.820: E/AndroidRuntime(13618): java.lang.RuntimeException: Unable to start activity ComponentInfo{ncu.bnlab.OnlineMoney/ncu.bnlab.OnlineMoney.OnlineMoney}: java.lang.NullPointerException
02-22 16:14:30.820: E/AndroidRuntime(13618):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2077)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at android.app.ActivityThread.access$600(ActivityThread.java:134)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at android.os.Handler.dispatchMessage(Handler.java:99)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at android.os.Looper.loop(Looper.java:137)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at android.app.ActivityThread.main(ActivityThread.java:4624)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at java.lang.reflect.Method.invokeNative(Native Method)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at java.lang.reflect.Method.invoke(Method.java:511)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at dalvik.system.NativeStart.main(Native Method)
02-22 16:14:30.820: E/AndroidRuntime(13618): Caused by: java.lang.NullPointerException
02-22 16:14:30.820: E/AndroidRuntime(13618):         at ncu.bnlab.OnlineMoney.OnlineMoney.Parser(OnlineMoney.java:166)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at ncu.bnlab.OnlineMoney.OnlineMoney.onCreate(OnlineMoney.java:102)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at android.app.Activity.performCreate(Activity.java:4479)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1050)
02-22 16:14:30.820: E/AndroidRuntime(13618):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2041)
02-22 16:14:30.820: E/AndroidRuntime(13618):         ... 11 more
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)
收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
xjxuvup | 收聽TA | 只看該作者
發表於 2014-2-24 15:54
應該是NetworkOnMainThreadException例外
用thread的方式去跑
這篇看看
http://my.eoe.cn/iceskysl/archive/4382.html

評分

參與人數 1碎鑽 +1 幫助 +1 收起 理由
andony5168 + 1 + 1 非常讚

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 1 反對 0

使用道具 舉報

板凳
 樓主| andony5168 | 收聽TA | 只看該作者
發表於 2014-3-4 10:13
xjxuvup 發表於 2014-2-24 15:54
應該是NetworkOnMainThreadException例外
用thread的方式去跑
這篇看看

沒錯耶!我後來就是用這篇的方法解決的,但是要二個方法都用才行。
謝謝您的回覆,愛你喔~
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則