2015-12-16 5 views
0

Как я могу положить JSONArray в RequestBody без исключения выполнения во время выполнения?Retrofit 2 RequestBody JsonArray

@Multipart 
@POST("/call_method") 
Call<MyResponse> callMethod(@Part("token")RequestBody token,@Part("params")RequestBody params); 

Мне нужно поставить JSONArray в параметры. То, что я в настоящее время делают:

callMethod(RequestBody.create(MediaType.parse("text/plain"), token), 
      RequestBody.create(MediaType.parse("text/plain"), jsonArrayParams)); 

Но когда я выполняю этот метод, я получаю исключение во время выполнения:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 

И очень межжала: Запрос выполняется (проверьте с помощью CharlesProxy), но я могу Это не результат результата из-за исключения времени выполнения. Как я могу исправить эту ошибку?

+1

исполнение в порядке, ваша проблема в ответе, как вы объявили прием объекта в то время как вы получаете массив в качестве ответа '' Позвони ... должно быть изменено, чтобы получить массив (разобран от ответа JSON) – Yazan

+0

Проверить ответ через Postman - я получаю JSONObject в ответ, а в MyResponse объявляют одиночный объект. – user3579059

+0

Когда я пытаюсь поставить JSONObject - выполнение в порядке, но сервер не получает JSONObject, только JSONArray – user3579059

ответ

1

исполнение в порядке, ваша проблема в ответе,

Ожидаемое BEGIN_OBJECT но BEGIN_ARRAY

, как вы объявили прием объекта Call<MyResponse> в то время как вы получаете массив

вам необходимо изменить тип в обратном вызове следующим образом:

Call<MyResponse[]> callMethod(@Part("token")RequestBody token,@Part("params")RequestBody params); 

ИЛИ

Call<List<MyResponse>> callMethod(@Part("token")RequestBody token,@Part("params")RequestBody params); 
Смежные вопросы