2015-02-15 7 views
0

Я создал Python REST api с Flask, который «должен» позволить мне использовать мой телефон в качестве клавиатуры.Андроид HTTP GET Request

Если я перехожу на 'http://192.168.0.37:5000/keyboard/a' на моем веб-браузере, мой ноутбук войдет в букву a. (Это работает).

Я попытался создать приложение для Android, которое сделает запрос http, но похоже, что оно не работает.

Это код, который я использовал. Я тестировал его в основном файле Java, и он работает, но он не будет работать в Android-приложении.

private void sendGet(String letter) throws IOException { 
    URL keyB = new URL("http://192.168.0.37:5000/keyboard/" + letter); 
    Toast.makeText(getApplicationContext(), keyB.toString(), Toast.LENGTH_SHORT).show(); 

    URLConnection kb = keyB.openConnection(); 
    BufferedReader in = new BufferedReader(new InputStreamReader(
      kb.getInputStream(), "UTF-8")); 

    String inputLine; 
    StringBuilder a = new StringBuilder(); 
    while ((inputLine = in.readLine()) != null) { 
     a.append(inputLine); 
    } 
    in.close(); 

    Toast.makeText(getApplicationContext(), a.toString(), Toast.LENGTH_SHORT).show(); 
} 
+0

Есть ли ошибки при запуске кода? –

+1

Вы должны использовать поток для связанной с сетью задачи, http://stackoverflow.com/questions/6343166/android-os-networkonmainthreadexception –

+0

Возможно, это связано с тем, кто имеет доступ к этому URL-адресу? например Если я нажму ссылку, ничего не произойдет ... Можете ли вы сделать этот запрос от Почтальона, и он все еще работает? – SJoshi

ответ

0

Благодаря комментарии @RemeesMSyde.

Я поместил метод в AsyncTask, и теперь он работает.

Это код, который я использовал.

class SendKeyStroke extends AsyncTask<String, String, String> { 
    @Override 
    protected String doInBackground(String... letter) { 
     try { 
      URL keyB = new URL("http://192.168.0.37:5000/keyboard/" + letter[0]); 
      System.out.println(keyB.toString()); 

      URLConnection kb = keyB.openConnection(); 
      BufferedReader in = new BufferedReader(new InputStreamReader(kb.getInputStream(), "UTF-8")); 

      String inputLine; 
      StringBuilder a = new StringBuilder(); 
      while ((inputLine = in.readLine()) != null) { 
       a.append(inputLine); 
      } 
      in.close(); 
     } catch(Exception ex) { 

     } 

     return null; 
    } 
}