2016-01-23 4 views
0

Я пытаюсь выполнить запрос, где я могу отправить несколько запросов одновременно, используя Retrofit так, я создал интерфейс, как это:дооснащения @FieldMap параметр типа должен быть Map

@FormUrlEncoded 
@POST("/locations/add.json") 
void sendMultipleLocations(@Query("token")String token, @FieldMap List<Map<String, String>> multipleLocations, Callback<String> callback); 

И потом, я создайте данные карты в списке, а затем нажмите.

private void sendLocations(List<Map<String, String>> multipleLocations) { 
    RestClient.get(this).sendMultipleLocations("token", multipleLocations, new Callback<String>() { 
     @Override 
     public void success(String s, Response response) { 
      Log.e("MultipleLocationResp", s); 
     } 

     @Override 
     public void failure(RetrofitError error) { 
      error.printStackTrace(); 
     } 
    }); 
} 

И я получаю эту ошибку:

java.lang.IllegalArgumentException: PodApi.sendMultipleLocations: @FieldMap parameter type must be Map. (parameter #2) 
at retrofit.RestMethodInfo.methodError(RestMethodInfo.java:107) 
at retrofit.RestMethodInfo.parameterError(RestMethodInfo.java:111) 
at retrofit.RestMethodInfo.parseParameters(RestMethodInfo.java:365) 
at retrofit.RestMethodInfo.init(RestMethodInfo.java:118) 
at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:294) 
at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220) 
at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278) 
at retrofit.CallbackRunnable.run(CallbackRunnable.java:42) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
at retrofit.Platform$Android$2$1.run(Platform.java:142) 
at java.lang.Thread.run(Thread.java:818) 

ответ

0

Вы должны использовать карту, а не список карт. @FieldMap Map<String, String> multipleLocations.

+0

Я не хочу делать ни одного запроса. Я намерен делать несколько запросов с разными данными. Вот почему он поставлен в очередь –

+0

Затем вам нужно сделать несколько вызовов 'sendMultipleLocations()'. Один вызов метода службы Retrofit всегда приведет к одному HTTP-вызову. Используйте цикл for для отправки нескольких запросов. – patloew

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