馬上加入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
|

|