2016-04-27 3 views
0

Я пытаюсь создать мобильный клиент, использующий android, чтобы использовать локальный REST API Я создал сервер отдыха на eclipse и работает без проблем , но я пытаюсь создать свой клиент на android studio, и он работает также, но когда я нажимаю кнопку, ничего не происходит.Как использовать REST api с Android

public class MainActivity extends AppCompatActivity { 
    private Button btnChercher; 
    private TextView tvJson; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     btnChercher = (Button) findViewById(R.id.btnchercher); 
     tvJson = (TextView) findViewById(R.id.tvJson); 
     btnChercher.setOnClickListener(new View.OnClickListener() { 
              @Override 
              public void onClick(View v) { 
               new JsonTask().execute("http://localhost:8080/membres"); 
              } 


             } 
     ); 
    } 


    public class JsonTask extends AsyncTask<String,String,String>{ 

     @Override 
     protected String doInBackground(String... params) { 
      HttpURLConnection connection=null; 
      BufferedReader reader=null; 

      try { 
       URL url = new URL(params[0]); 
       connection = (HttpURLConnection) url.openConnection(); 

       connection.connect(); 

       InputStream stream = connection.getInputStream(); 

       reader = new BufferedReader(new InputStreamReader(stream)); 

       StringBuffer buffer = new StringBuffer(); 

       String line =""; 

       while ((line=reader.readLine())!=null){ 
        buffer.append(line); 
       } 

       String finalJson = buffer.toString(); 

       JSONObject parentObject = new JSONObject(); 
       JSONArray parentArray = parentObject.getJSONArray(""); 
       JSONObject finalObject = parentArray.getJSONObject(0); 

       String nomMembre = finalObject.getString("nomMembre"); 

       return nomMembre+"\n"; 





      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } finally { 
       if(connection!=null){ 
        connection.disconnect(); 
       } 

       if(reader!=null){ 
        try { 
         reader.close(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 


      return null; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 

      tvJson.setText(result); 
     } 
    } 
}` 
+0

Изучите использование [Retrofit] (http://square.github.io/retrofit/), что упрощает большую часть работы по созданию клиента REST. – chRyNaN

ответ

1

В вашем примере показан URL-адрес "http://localhost:8080/membres". Это намеренно? Ваше приложение для Android работает на вашем веб-сервере?

Наверное, нет. "http://localhost:8080/membres" работает на вашем компьютере, потому что localhost относится к вашей машине.

Для того, чтобы сделать ваш Android доступ приложение ваш REST API, вы должны выполнить одно из следующих действий:

  • Заменить localhost с IP вашего сервера. Это потребует, чтобы ваше приложение Android находилось в той же сети, что и ваш сервер.
  • Принимайте ваше приложение в другом месте, например, Heroku. Замените localhost:8080 на общедоступный URL.

Есть и другие варианты, но это самые простые.

+0

Другой вариант (во избежание подключения к той же сети) - это перенаправление портов в маршрутизатор, но для этого требуется фиксированный ip, чтобы всегда подключаться в одном направлении. –

+0

думаю, что вы брат ggmathur для вашего объяснения –

+0

, но когда я его заменяю своим ip-адресом, он запускается, но он ничего не отображает, когда я смотрю в консоли eclipse. Я могу видеть ретрансляторы Hibernate, я сделал ошибку в коде JSON –