2016-02-09 5 views
-2

Мы создаем Android-приложение для управления небольшим светом, связанным с веб-сервером.Java android simple http get method

Цель состоит в том, когда мы нажимаем на кнопку там будет отправить простое httpGETrequest на: http://192.168.2.179/?led1

Мы попробовали много разных способов, и ни один из них не работает.

Знаете ли вы простой способ реализовать это для нашего проекта?

public void lihtbulp(View v) throws IOException, URISyntaxException { 

    InputStream is = null; 
    // Only display the first 500 characters of the retrieved 
    // web page content. 
    int len = 500; 

    try { 
     URL url = new URL("http://192.168.2.179/?led1"); 
     HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
     conn.setReadTimeout(10000 /* milliseconds */); 
     conn.setConnectTimeout(15000 /* milliseconds */); 
     conn.setRequestMethod("GET"); 
     conn.setDoInput(true); 
     // Starts the query 
     conn.connect(); 
     int response = conn.getResponseCode(); 
     Log.d(DEBUG_TAG, "The response is: " + response); 
     is = conn.getInputStream(); 

     // Convert the InputStream into a string 


     // Makes sure that the InputStream is closed after the app is 
     // finished using it. 
    } finally { 
     if (is != null) { 
      is.close(); 
     } 
    } 
} 

это все LogCat:

02-09 09:31:35.308 3679-3679/com.example.evelien.domotica D/AndroidRuntime﹕ Shutting down VM 
02-09 09:31:35.308 3679-3679/com.example.evelien.domotica E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.example.evelien.domotica, PID: 3679 
    java.lang.IllegalStateException: Could not execute method of the activity 
      at android.view.View$1.onClick(View.java:4020) 
      at android.view.View.performClick(View.java:4780) 
      at android.view.View$PerformClick.run(View.java:19866) 
      at android.os.Handler.handleCallback(Handler.java:739) 
      at android.os.Handler.dispatchMessage(Handler.java:95) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5254) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
    Caused by: java.lang.reflect.InvocationTargetException 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at android.view.View$1.onClick(View.java:4015) 
            at android.view.View.performClick(View.java:4780) 
            at android.view.View$PerformClick.run(View.java:19866) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5254) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
    Caused by: android.os.NetworkOnMainThreadException 
      at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147) 
      at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110) 
      at libcore.io.IoBridge.connectErrno(IoBridge.java:154) 
      at libcore.io.IoBridge.connect(IoBridge.java:122) 
      at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183) 
      at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:456) 
      at java.net.Socket.connect(Socket.java:882) 
      at com.android.okhttp.internal.Platform.connectSocket(Platform.java:174) 
      at com.android.okhttp.Connection.connect(Connection.java:152) 
      at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:276) 
      at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211) 
      at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:382) 
      at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106) 
      at com.example.evelien.domotica.Domotica.lihtbulp(Domotica.java:76) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at android.view.View$1.onClick(View.java:4015) 
            at android.view.View.performClick(View.java:4780) 
            at android.view.View$PerformClick.run(View.java:19866) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5254) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
02-09 09:36:35.393 3679-3679/com.example.evelien.domotica I/Process﹕ Sending signal. PID: 3679 SIG: 9 

код относится к conn.connect();

+0

Можете ли вы показать код, который у вас уже есть? Мы не будем писать код, чтобы он мог показать, что у вас есть, а также любой вывод LogCat. – basic

+0

извините за это, вот код: –

+0

Любой выход в logcat – basic

ответ

1

Вы не можете запустить HTTPRequest в основном потоке приложения в простейшем случае, создайте asynctask и выполните HTTP-запрос внутри asynctask. Отметить эту тему: How to fix android.os.NetworkOnMainThreadException?