AsyncHttpClient没有调用我的POST API

时间:2019-01-23 08:48:45

标签: android asynchttpclient android-async-http

我刚接触Android,正在使用AsyncHttpClient来调用POST API。但是API甚至没有被调用

下面是我的代码:

        AsyncHttpClient client = new AsyncHttpClient();

        client.addHeader("Key","random-key");
        JSONObject body = new JSONObject();
        body.put("clientId","random-client-id");
        body.put("question",question);
        HttpEntity entity = new StringEntity(body.toString());
        client.post( getApplicationContext(),"http://localhost:3000/api/Chats/GetAnswer", entity,"application/json", new JsonHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                List<List<Answer>> answers = new ArrayList<>();
                try {
                    JSONArray answersJson = response.getJSONArray("answers");
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, String response, Throwable error) {
                Toast toast = Toast.makeText(getApplicationContext(),"Unable to get answers for the question sent",Toast.LENGTH_SHORT);
                toast.show();
            }
        });
    `

任何提示我在做什么错??

2 个答案:

答案 0 :(得分:0)

已解决,看来问题出在AndroidManifest.xml中,因为我正在使用互联网并调用外部API,所以我必须添加:

<uses-permission android:name="android.permission.INTERNET"/>

还有另一件事。在本地工作并使用仿真器进行测试时,我们应该编写
http://10.0.2.2:port-number/,而不是http://localhost:port-number/。因为android模拟器在虚拟机中运行。因此,localhost将是仿真器自己的环回地址。

答案 1 :(得分:-1)

请在您的方法上放置调试器,并确保是否调用它,我认为您传递了错误的上下文值,并且从我的角度来看,它比AsyncHttpClient对用户改进更好。 如果要与Web服务通信,请使用Retrofit。