Могу ли я отправить JSON непосредственно через дооснащение так:Непосредственно POST JSONObject через дооснащение
@POST("rest/workouts")
Call<CreateWorkoutSuccessAnswer> createWorkout(@NonNull @Body JSONObject jsonObject);
Могу ли я отправить JSON непосредственно через дооснащение так:Непосредственно POST JSONObject через дооснащение
@POST("rest/workouts")
Call<CreateWorkoutSuccessAnswer> createWorkout(@NonNull @Body JSONObject jsonObject);
Вы можете использовать TypedInput
@POST("rest/workouts")
Call<CreateWorkoutSuccessAnswer> createWorkout(@NonNull @Body TypedInput body);
А для формирования параметров:
TypedInput in = new TypedByteArray("application/json", jsonObject.toString().getBytes("UTF-8"));
и использовать в в качестве параметра для запроса.
Вы можете напрямую публиковать объекты JSON, используя GSONs JsonObject
класс.
Причина, по которой Googles JSONObject
не работает, заключается в том, что retrofit использует GSON по умолчанию и пытается сериализовать параметр JSONObject как POJO. Таким образом, вы получите что-то вроде:
{
"JSONObject":
{
<your JSON object here>
}
}
Если то, что вы делаете, требует использования JSONObject
, то вы можете просто конвертировать между ними, используя формат строки объекта.
Я попытался выполнить поиск в google, но не нашел. Как я могу подключить TypedInput – Devnock
Вы также можете попробовать следующее: @POST («отдых/тренировки») Вызов createWorkout (@NonNull @Body RequestBody requestBody); RequestBody requestBody = RequestBody.create (MediaType.parse ("application/json"), jsonObject.toString()); –
Спасибо, чувак! Он решил все мои проблемы – Devnock