Как получить ответ от почтового запроса к Rest API на Android

Я отправил почтовый запрос с Android на конечную точку Rest API и не получил ответа от сервера. Мне нужно получить такой ответ:

[{"field":"login","message":"Login \"loooogin\" has already been taken."}]

Я подумал, может быть, я могу прочитать ответ в STATUS или MSG:

Log.i("STATUS", String.valueOf(conn.getResponseCode()));
                        Log.i("MSG" , conn.getResponseMessage());

Но мои попытки не дают результатов. Код в Android:

public void createAccount(final String login, final String carNumber) {
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL url = new URL("url");
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setRequestMethod("POST");
                    conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
                    conn.setRequestProperty("Accept","application/json");
                    conn.setDoOutput(true);
                    conn.setDoInput(true);
                    JSONObject jsonParam = new JSONObject();
                    jsonParam.put("login", login);
                    jsonParam.put("carNumber", carNumber);
                    Log.i("JSON", jsonParam.toString());
                    DataOutputStream os = new DataOutputStream(conn.getOutputStream());
                    os.writeBytes(jsonParam.toString());
                    os.flush();
                    os.close();
                    Log.i("STATUS", String.valueOf(conn.getResponseCode()));
                    Log.i("MSG" , conn.getResponseMessage());
                    conn.disconnect();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        thread.start();
    }

Привет @k_bm, просто в качестве предложения я бы сказал, что, возможно, стоит взглянуть на библиотеку Retrofit, поскольку в настоящее время большинство людей обычно используют ее для выполнения сетевых запросов на Android.

Francislainy Campos 06.02.2019 22:17

@FrancislainyCampos Вы правы! Но не каждый юниор может научиться этому быстро и может застрять с некоторыми проблемами и Лучшие практики.

ardiien 06.02.2019 22:23
1
2
58
1

Ответы 1

Вы можете написать что-то вроде этого, если вы подключили Gson, если нет, замените JsonArray на JSONArray и сделайте вызов get() с помощью выпитого JSONArray.

JsonArray array = new JsonArray(jsonParam.toString());
    array.forEach(item -> {
        Log.i("JSON", item.get("login").asString())
    }
);

Мне не нужен только массив json. Мне также нужно получить сообщение, было ли оно успешным или нет. Вы знаете, как это сделать?

k_bm 06.02.2019 22:24

попробуйте conn.getResponseCode() == HttpURLConnection.HTTP_OK, это успех. Также проверьте полный список констант

ardiien 06.02.2019 22:27

Другие вопросы по теме