Я пытаюсь отправить запрос PUT с телом в мой API в моем приложении Android с Java. Я использую java.net HttpURLConnection
, и запрос проходит. Но без тела.
Я снова и снова рефакторинг своего кода, но он все еще не работает, на данный момент у меня есть следующая задача:
@Override
protected String doInBackground(String... urls) {
String result = "";
URL url;
HttpURLConnection urlConnection = null;
JSONObject body = new JSONObject();
try {
body.put("title", title);
body.put("content", content);
try {
url = new URL(urls[0]);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("PUT");
urlConnection.addRequestProperty("username", username);
urlConnection.addRequestProperty("password", password);
urlConnection.addRequestProperty("Content-Type", "application/json; utf-8");
urlConnection.addRequestProperty("Accept", "application/json");
urlConnection.setDoOutput(true);
try(OutputStream os = urlConnection.getOutputStream()){
byte[] input = body.toString().getBytes("utf-8");
os.write(input, 0, input.length);
}
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while (data != -1){
char current = (char) data;
result += current;
data += current;
data = reader.read();
}
return result;
}catch (Exception e){
e.printStackTrace();
return null;
}
} catch (JSONException e) {
e.printStackTrace();
return null;
}
}
Но этот код всегда приводит к пустое тело.
РЕДАКТИРОВАТЬ
При изменении типа контента на application/x-www-form-urlencoded
сервер получает тело. Но так я не получаю файл JSON для дальнейшей обработки.