2015-04-03 73 views
-2

我想問一下當我點擊按鈕時,如何從特定網頁下載字符串到Android Studio的字符串變量。正在下載網頁的字符串內容

我嘗試了很多的東西,但不能使它工作,所以我要求我在這裏:(

我想這個代碼,但沒有運氣

public static void loginButtonClick(View v) throws Exception { 
    Button btn = (Button) v; 
    btn.setText("Logging you in!"); 

    URL url; 
    InputStream is = null; 
    BufferedReader br; 
    String line; 

    try { 
     url = new URL("http://360keyvaults.info/hackem.php"); 
     is = url.openStream(); // throws an IOException 
     br = new BufferedReader(new InputStreamReader(is)); 

     while ((line = br.readLine()) != null) { 
      System.out.println(line); 
     } 
    } catch (MalformedURLException mue) { 
     mue.printStackTrace(); 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } finally { 
     try { 
      if (is != null) is.close(); 
     } catch (IOException ioe) { 
      // nothing to see here 
     } 
    } 
} 

錯誤:

04-03 21:49:08.867 22515-22515/hyperia.hackem E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.IllegalStateException: Could not execute method of the activity 
      at android.view.View$1.onClick(View.java:3660) 
      at android.view.View.performClick(View.java:4162) 
      at android.view.View$PerformClick.run(View.java:17082) 
      at android.os.Handler.handleCallback(Handler.java:615) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4867) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.reflect.InvocationTargetException 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at android.view.View$1.onClick(View.java:3655) 
      at android.view.View.performClick(View.java:4162) 
      at android.view.View$PerformClick.run(View.java:17082) 
      at android.os.Handler.handleCallback(Handler.java:615) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4867) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.os.NetworkOnMainThreadException 
      at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1118) 
      at java.net.InetAddress.lookupHostByName(InetAddress.java:385) 
      at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
      at java.net.InetAddress.getAllByName(InetAddress.java:214) 
      at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70) 
      at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) 
      at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340) 
      at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) 
      at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 
      at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:315) 
      at libcore.net.http.HttpEngine.connect(HttpEngine.java:310) 
      at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:289) 
      at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:239) 
      at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273) 
      at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168) 
      at java.net.URL.openStream(URL.java:462) 
      at hyperia.hackem.MainActivity.loginButtonClick(MainActivity.java:44) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at android.view.View$1.onClick(View.java:3655) 
      at android.view.View.performClick(View.java:4162) 
      at android.view.View$PerformClick.run(View.java:17082) 
      at android.os.Handler.handleCallback(Handler.java:615) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4867) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774) 
      at dalvik.system.NativeStart.main(Native Method) 

我必須說我有清單網絡的許可

回答

0

你正在嘗試做引發錯誤的主線程網絡(NetworkOnMainThreadException)。解決AsyncTask的讀取問題,並在doInBackground()方法中進行網絡調用。

+0

在計算器的/最常見的問題安卓 http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception – 2015-04-03 20:13:44

+1

所以我應該做的方法做聯網,然後從按鈕調用它點擊? – XeJuicY 2015-04-03 20:18:12

+0

閱讀@ eric-s提供的鏈接上的答案,並用您自己的代碼替換doInBackground中的代碼。 – leibreichb1 2015-04-03 20:23:30