如何使用Android使用REST api

时间:2016-04-27 21:49:29

标签: android rest

我正在尝试使用android创建一个使用本地REST API的移动客户端 我已经在eclipse上创建了rest服务器,它运行没有问题 但我试图在android studio上创建我的客户端,它也在运行但是当我点击按钮时没有发生任何事情。

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);
        }
    }
}`

1 个答案:

答案 0 :(得分:1)

您的示例显示了网址"http://localhost:8080/membres"。这是故意的吗?您的Android应用程序是否在运行您的Web服务器?

可能不是。 "http://localhost:8080/membres"适用于您的计算机,因为localhost指的是您的计算机本身。

为了让您的Android应用访问您的REST API,您应该执行以下操作之一:

  • localhost替换为您服务器的IP。这将要求您的Android应用与您的服务器位于同一网络上。
  • 将您的应用程序托管在其他地方,例如Heroku。将localhost:8080替换为可公开访问的网址。

还有其他选择,但这些是最简单的。