2016-01-28 3 views
-2

Редактировать: Мне очень жаль, насколько плохо я задал свой вопрос поначалу, я был крайне расстроен и устал, но я знаю, что это действительно не оправдание. Во всяком случае, я его отредактировал. Я также уже много смотрел на форумах StackOverflow и других и пробовал методы на их, без результата, поэтому я думаю, что это не дублирующий вопрос.HTTP Get Not Working

После нескольких часов попыток и использования нескольких методов я, наконец, сдался и решил задать вопрос здесь. Настолько разочаровывающе, что я не могу заставить это работать, это для проекта домашней автоматизации, и изучение новых языков, таких как C и python, никогда не было проблемой при работе над этим проектом, поэтому не заставить это работать крайне сложно. Во всяком случае вот код:

public void buttonOnClick(View v) { 
    Button button = (Button) v; 
    ((Button) v).setText("clicked"); 
     // The request here 
     // The request here 
     // The request here 
     // The request here 

     } 

Это простое приложение, с помощью одной кнопки, которая должна послать простой HTTP GET запрос на 192.168.0.150/main_light/switch. Я знаю, что это должно работать, поскольку я всегда использовал HTTP GET в Tasker для этого (и он работает на Python). Я действительно надеюсь, что кто-то может помочь мне здесь, спасибо!

P.S. Я знаю, что здесь есть бесполезные действия, я JAVA Noob и решил просто не возиться с чем-либо, пока я не смогу, наконец, получить эту работу.

+3

Вместо публикации большого количества нерелевантного кода, который не имеет никакого отношения к запуску запроса HTTP GET, вы должны скорее показать, какой код вы попробовали, чтобы запустить запрос. –

+1

Попробуйте ответ отсюда [сделайте http-запрос с помощью android] (http://stackoverflow.com/questions/3505930/make-an-http-request-with-android) –

+0

@JanusVarmarken Мне очень жаль, у меня есть отредактировал вопрос. – JanG

ответ

0

Использования HttpURLConnection для достижения того же:

String serverURL = "http://192.168.0.150/main_light/switch"; 
URL url = new URL(serverURL); 
HttpURLConnection connection = null; 
try { 
    connection = (HttpURLConnection) url.openConnection(); 
    connection.setRequestMethod("GET"); 
    BufferedReader in = new BufferedReader(
    new InputStreamReader(con.getInputStream())); 
    //Do something with this InputStream 
    // handle the response 
    int status = connection.getResponseCode(); 
    // If response is not success 
    if (status != 200) { 
     throw new IOException("Post failed with error code " + status); 
    } 
} catch (Exception e) { 
    Log.e(TAG,e.toString()); 
} finally { 
    if(connection != null) 
     connection.disconnect(); 
} 

Надеется, что это помогает!

+0

Конечно, это не поможет, так как вы не читаете страницу, отправленную сервером. Таким образом, ваш код 'получает 'ничего. – greenapps

+0

К сожалению, пропустили самые крутые вещи. Спасибо за указание. –

+0

Ваш код по-прежнему не извлекает страницу. – greenapps

0

Попробуйте использовать http://square.github.io/okhttp/

Поместите код здесь, как это:

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      OkHttpClient client = new OkHttpClient(); 
      String run(String url) throws IOException { 
      Request request = new Request.Builder() 
       .url(url) 
       .build(); 

      Response response = client.newCall(request).execute(); 
      return response.body().string(); 
     } 
    } 
}); 
0

Используйте этот метод:

public static int get(String url) throws Exception { 
    URL obj = new URL(url); 
    HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
    con.setRequestMethod("GET"); 
    int responseCode = con.getResponseCode(); 
    BufferedReader in = new BufferedReader(
     new InputStreamReader(con.getInputStream())); 
    String inputLine; 
    while ((inputLine = in.readLine()) != null) { 
     //consume response if any; 
    } 
    in.close(); 
    return responseCode; 
} 

Реализовать потребление запроса, если вам нужно.