我想向服务器发送帖子请求
@FormUrlEncoded
@POST("index.php")
Call<MyObjResponse> myCall(@Part List<MultipartBody.Part> files, @FieldMap Map<String, String> params);
我得到一个错误:
java. lang.IllegalArgumentException:@Part参数只能与多部分编码一起使用。(参数#1)用于方法IRestApi.pushLocalChangesWellMultipartCall在Retrofit 2。ServiceMethod$Builder.方法错误(ServiceMethod.java:752)在Retrofit 2。ServiceMethod$Builder.方法错误(ServiceMethod.java:743)在Retrofit 2。ServiceMethod$Builder.参数错误(ServiceMethod.java:761)在Retret2。ServiceMethod$Builder.parseParameterAnnotion(ServiceMethod.java:592)在Retice2。ServiceMethod$Builder.parseParameter(ServiceMethod.java:336)在Retfit 2。ServiceMethod$Builder.build(ServiceMethod.java:204)在Retrofit 2。Retrofit.loadServiceMethod(Retrofit.java:170)在Retrofit 2。Retrofit 1 dol.invoke(Retrofit.java:147)在java.lang.反射.Proxy.invoke(Proxy.java:913)在$Proxy5.pushLocalChangesWellMultipartCall(未知来源)
我尝试将@Multipart
放在@FormUrlEncoded
的位置,错误变成:
java. lang.IllegalArgumentException:@FieldMap参数只能与表单编码一起使用。(参数#2)用于方法IRestApi.pushLocalChangesWellMultipartCall在Retrofit 2。ServiceMethod$Builder.方法错误(ServiceMethod.java:752)在Retrofit 2。ServiceMethod$Builder.方法错误(ServiceMethod.java:743)在Retrofit 2。ServiceMethod$Builder.参数错误(ServiceMethod.java:761)在Retice2。ServiceMethod$Builder.parseParameterAnnotion(ServiceMethod.java:567)在Retice2。ServiceMethod$Builder.parseParameter(ServiceMethod.java:336)在Retfit 2。ServiceMethod$Builder.build(ServiceMethod.java:204)在Retrofit 2。Retrofit.loadServiceMethod(Retrofit.java:170)在Retrofit 2。Retrofit 1 dol.invoke(Retrofit.java:147)在java.lang.反射.Proxy.invoke(Proxy.java:913)在$Proxy5.pushLocalChangesWellMultipartCall(未知来源)
p. s.POST
是一个我不能使用PUT
的多媒体
如果你想使用Multipart
,那么你应该使用@PartMap
而不是@FieldMap
这是另一个答案中的一个例子
https://stackoverflow.com/a/40136931/8479132