2016-04-28 2 views

ответ

2

Вы можете использовать TypedInput

@POST("rest/workouts") 
Call<CreateWorkoutSuccessAnswer> createWorkout(@NonNull @Body TypedInput body); 

А для формирования параметров:

TypedInput in = new TypedByteArray("application/json", jsonObject.toString().getBytes("UTF-8")); 

и использовать в в качестве параметра для запроса.

+0

Я попытался выполнить поиск в google, но не нашел. Как я могу подключить TypedInput – Devnock

+0

Вы также можете попробовать следующее: @POST («отдых/тренировки») Вызов createWorkout (@NonNull @Body RequestBody requestBody); RequestBody requestBody = RequestBody.create (MediaType.parse ("application/json"), jsonObject.toString()); –

+0

Спасибо, чувак! Он решил все мои проблемы – Devnock

1

Вы можете напрямую публиковать объекты JSON, используя GSONs JsonObject класс.

Причина, по которой Googles JSONObject не работает, заключается в том, что retrofit использует GSON по умолчанию и пытается сериализовать параметр JSONObject как POJO. Таким образом, вы получите что-то вроде:

{ 
    "JSONObject": 
    { 
     <your JSON object here> 
    } 
} 

Если то, что вы делаете, требует использования JSONObject, то вы можете просто конвертировать между ними, используя формат строки объекта.

Смежные вопросы