Я отправил почтовый запрос с 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();
}
@FrancislainyCampos Вы правы! Но не каждый юниор может научиться этому быстро и может застрять с некоторыми проблемами и Лучшие практики.
Вы можете написать что-то вроде этого, если вы подключили Gson, если нет, замените JsonArray на JSONArray и сделайте вызов get() с помощью выпитого JSONArray.
JsonArray array = new JsonArray(jsonParam.toString());
array.forEach(item -> {
Log.i("JSON", item.get("login").asString())
}
);
Мне не нужен только массив json. Мне также нужно получить сообщение, было ли оно успешным или нет. Вы знаете, как это сделать?
попробуйте conn.getResponseCode() == HttpURLConnection.HTTP_OK, это успех. Также проверьте полный список констант
Привет @k_bm, просто в качестве предложения я бы сказал, что, возможно, стоит взглянуть на библиотеку
Retrofit, поскольку в настоящее время большинство людей обычно используют ее для выполнения сетевых запросов на Android.