В моем коде я должен сделать запрос PUT MultipartForm-Data для обновления объекта на сервере, он должен быть Multipart, поскольку возможно, что пользователь отправит изображение вместе с данными.
Для этого я в настоящее время использую Retrofit, поскольку это библиотека, к которой я прилично привык, и она работает для отправки изображений на сервер.
Однако на стороне сервера все изменилось, и теперь одним из параметров, который необходимо отправить, является:
{"step":
{"type":"begin"}
}
Однако это оказалось на удивление трудно сделать.
Вещи, которые я пробовал, включают передачу его как MultipartTypedOutput, набранную вручную строку и JSONObject, преобразованный в строку, и все это дало мне:
retrofit.RetrofitError: 400 Неверный запрос
Используемый URL-адрес правильный, я дважды проверил с человеком, который обслуживает сервер, и он достигает сервера, но с неправильным объектом «шаг».
Я также пытался передать его как NameValuePair, Map и HashMap, и все это дало мне:
retrofit.RetrofitError: Тело детали не должно быть нулевым.
@FieldPart, который выглядит идеально для этого, не совместим с Multipart, так есть ли вообще способ сделать это с помощью Retrofit?
Мой текущий метод PUT таков:
@Headers({
"Connection: Keep-Alive",
"Accept-Language: en-US"
})
@Multipart
@PUT("/0.1/user/{id}")
String updateUser(@Path("id") String userId, @Part("step") Map<String,String> type);
Где тип карты был изменен на все типы, о которых я упоминал ранее.