2014-01-19 3 views
0

Я пытаюсь сделать приложение для Android, которое может отправить запрос GET на сервер в локальной сети. Я нашел пример here и использовал пример GET. Я изменил строку getURL как адрес, который хочу отправить (192.168.1.177/?testGET). Затем я подключил функцию к кнопке onClick, но когда я тестирую приложение на своем телефоне, приложение закрывается, как только я нажимаю кнопку. См. Ниже код.Android - HTTP GET-запрос

public void sendGETrequest(){ 
    try { 
     HttpClient client = new DefaultHttpClient(); 
     String getURL = "192.168.1.177/?testGET" ; 
     HttpGet get = new HttpGet(getURL); 
     HttpResponse responseGet = client.execute(get); 
     HttpEntity resEntityGet = responseGet.getEntity(); 
     if (resEntityGet != null) { 
        //do something with the response 
        Log.i("GET RESPONSE",EntityUtils.toString(resEntityGet)); 
       } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
} 

Почему это может быть не работать? Также есть способ динамически добавлять параметры в конец URL-адреса, который должен быть прочитан сервером.
Ниже для вывода окна консоли
[2014-01-19 15:44:25 - sensorTest] ------------------------------
[2014-01-19 15:44:25 - sensorTest] Android Launch!
[2014-01-19 15:44:25 - sensorTest] adb is running normally.
[2014-01-19 15:44:25 - sensorTest] Performing com.example.sensortest.MainActivity activity launch
[2014-01-19 15:44:51 - sensorTest] Uploading sensorTest.apk onto device 'P772N10_VIRGIN'
[2014-01-19 15:44:51 - sensorTest] Installing sensorTest.apk...
[2014-01-19 15:44:58 - sensorTest] Success!
[2014-01-19 15:44:58 - sensorTest] Starting activity com.example.sensortest.MainActivity on device P772N10_VIRGIN

Когда я открываю приложение и нажмите на кнопку, ее закрывает остроумие h сообщение «К сожалению, тест датчика остановлен».

+0

Пожалуйста, ваши LogCat. –

+0

Извините, я новичок в этом. Что такое LogCat? –

+0

Система регистрации Android. Если вы используете Eclipse, он находится в нижнем представлении. –

ответ

0

Без ловушки, трудно сказать, что вызывает крушение. Но я вполне уверен, что это потому, что вы занимаетесь сетью в основном потоке.

См NetworkingOnMainThreadException

Это не обязательно объяснить много, но в основном, вы не можете выполнять задачи сети (или длинный ход) на основном потоке, как это потенциально вешает интерфейс. This, вероятно, лучшее объяснение.

Что касается «динамического добавления параметров», можно просто изменить его на что-то вроде этого:

public void sendGETRequest(String paramaters){ 
    ... 

    String getURL = "192.168.1.177/?testGET&" + paramaters; 

    ... 
} 

и вы можете передать параметры с вызовом метода, как так:

sendGETRequest("username=admin&password=123Password321!");