【问题标题】:Retrofit @FieldMap parameter type must be Map改造@FieldMap 参数类型必须是Map
【发布时间】:2016-01-24 06:08:15
【问题描述】:

我正在尝试实现一个可以使用Retrofit 同时发送多个请求的请求,所以我创建了一个这样的接口:

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

然后,我在 List 中构建地图数据,然后推送。

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)

【问题讨论】:

    标签: android retrofit


    【解决方案1】:

    您必须使用地图,而不是地图列表。 @FieldMap Map&lt;String, String&gt; multipleLocations.

    【讨论】:

    • 我不想提出一个请求。我打算用不同的数据发出多个请求。这就是它排队的原因
    • 那么你必须多次调用sendMultipleLocations()。对改造服务的方法的一次调用将始终导致一次 http 调用。使用 for 循环发送多个请求。
    猜你喜欢
    • 2021-06-18
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 2019-01-24
    • 2020-06-20
    • 1970-01-01
    相关资源
    最近更新 更多