AsyncHttpClient не вызывает мой POST API - PullRequest
0 голосов
/ 23 января 2019

Я новичок в 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 голосов
/ 23 января 2019

Решено, похоже, проблема была в AndroidManifest.xml Поскольку я пользуюсь интернетом и вызываю внешний API, мне пришлось добавить:

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

И ещевещь.При локальной работе и тестировании с использованием эмулятора мы должны написать
http://10.0.2.2:port-number/ вместо http://localhost:port-number/.Потому что эмулятор андроида работает в виртуальной машине.Следовательно, localhost будет адресом обратной связи эмулятора.

0 голосов
/ 23 января 2019

Пожалуйста, установите отладчик в вашем методе и убедитесь, что он вызывается или нет, я думаю, что вы передали неверное значение контекста. И, с моей точки зрения, лучше для модификации пользователя, чем для AsyncHttpClient.Используйте Retrofit, если вы общаетесь с веб-сервисом.

...