我想向服务器&发送一个帖子请求我有多个键值参数和一个像这样的文件列表:
@FormUrlEncoded
@POST("index.php")
Call<MyObjResponse> myCall(@Part List<MultipartBody.Part> files, @FieldMap Map<String, String> params);
我收到错误:
java.lang.IllegalArgumentException:@Part参数只能与多部分编码一起使用。 (参数#1) 方法IRestApi.pushLocalChangesWithMultipartCall at retrofit2.ServiceMethod $ Builder.methodError(ServiceMethod.java:752) at retrofit2.ServiceMethod $ Builder.methodError(ServiceMethod.java:743) at retrofit2.ServiceMethod $ Builder.parameterError(ServiceMethod.java:761) at retrofit2.ServiceMethod $ Builder.parseParameterAnnotation(ServiceMethod.java:592) at retrofit2.ServiceMethod $ Builder.parseParameter(ServiceMethod.java:336) at retrofit2.ServiceMethod $ Builder.build(ServiceMethod.java:204) at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170) at retrofit2.Retrofit $ 1.invoke(Retrofit.java:147) 在java.lang.reflect.Proxy.invoke(Proxy.java:913) 在$ Proxy5.pushLocalChangesWithMultipartCall(未知来源)
我尝试用@Multipart
代替@FormUrlEncoded
,错误变为:
java.lang.IllegalArgumentException:@FieldMap参数只能与表单编码一起使用。 (参数#2) 方法IRestApi.pushLocalChangesWithMultipartCall at retrofit2.ServiceMethod $ Builder.methodError(ServiceMethod.java:752) at retrofit2.ServiceMethod $ Builder.methodError(ServiceMethod.java:743) at retrofit2.ServiceMethod $ Builder.parameterError(ServiceMethod.java:761) at retrofit2.ServiceMethod $ Builder.parseParameterAnnotation(ServiceMethod.java:567) at retrofit2.ServiceMethod $ Builder.parseParameter(ServiceMethod.java:336) at retrofit2.ServiceMethod $ Builder.build(ServiceMethod.java:204) at retrofit2.Retrofit.loadServiceMethod(Retrofit.java:170) at retrofit2.Retrofit $ 1.invoke(Retrofit.java:147) 在java.lang.reflect.Proxy.invoke(Proxy.java:913) 在$ Proxy5.pushLocalChangesWithMultipartCall(未知来源)
P.S。 POST
是一个我无法使用的PUT
答案 0 :(得分:0)