【问题标题】:Retrofit request @Part and @FieldMap together一起改造请求@Part 和@FieldMap
【发布时间】:2018-09-22 01:05:14
【问题描述】:

我想向服务器发送一个发布请求,我有多个键值参数和一个文件列表,如下所示:

@FormUrlEncoded
@POST("index.php")
Call<MyObjResponse> myCall(@Part List<MultipartBody.Part> files, @FieldMap Map<String, String> params);

我收到一个错误:

java.lang.IllegalArgumentException:@Part 参数只能与多部分编码一起使用。 (参数#1) 对于方法 IRestApi.pushLocalChangesWithMultipartCall 在 retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:752) 在 retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:743) 在 retrofit2.ServiceMethod$Builder.parameterError(ServiceMethod.java:761) 在 retrofit2.ServiceMethod$Builder.parseParameterAnnotation(ServiceMethod.java:592) 在 retrofit2.ServiceMethod$Builder.parseParameter(ServiceMethod.java:336) 在 retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:204) 在 retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170) 在 retrofit2.Retrofit$1.invoke(Retrofit.java:147) 在 java.lang.reflect.Proxy.invoke(Proxy.java:913) 在 $Proxy5.pushLocalChangesWithMultipartCall(Unknown Source)

我尝试用@Multipart 代替@FormUrlEncoded 并且错误变为:

java.lang.IllegalArgumentException:@FieldMap 参数只能与表单编码一起使用。 (参数#2) 对于方法 IRestApi.pushLocalChangesWithMultipartCall 在 retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:752) 在 retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:743) 在 retrofit2.ServiceMethod$Builder.parameterError(ServiceMethod.java:761) 在 retrofit2.ServiceMethod$Builder.parseParameterAnnotation(ServiceMethod.java:567) 在 retrofit2.ServiceMethod$Builder.parseParameter(ServiceMethod.java:336) 在 retrofit2.ServiceMethod$Builder.build(ServiceMethod.java:204) 在 retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170) 在 retrofit2.Retrofit$1.invoke(Retrofit.java:147) 在 java.lang.reflect.Proxy.invoke(Proxy.java:913) 在 $Proxy5.pushLocalChangesWithMultipartCall(Unknown Source)

附言POST 是一个 mult 我不能用 PUT

【问题讨论】:

    标签: android retrofit


    【解决方案1】:

    如果你想使用Multipart,那么你应该使用@PartMap而不是@FieldMap

    这是另一个答案中的示例

    https://stackoverflow.com/a/40136931/8479132

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-04
      • 2016-03-17
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      相关资源
      最近更新 更多