Запрос на модернизацию @Part и @FieldMap вместе

Я хотел бы отправить почтовый запрос на сервер, и у меня есть несколько параметров ключ-значение и список таких файлов:

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

Я получаю сообщение об ошибке:

java.lang.IllegalArgumentException: @Part parameters can only be used with multipart encoding. (parameter #1) for method 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) at java.lang.reflect.Proxy.invoke(Proxy.java:913) at $Proxy5.pushLocalChangesWithMultipartCall(Unknown Source)

Я попытался поставить @Multipart вместо @FormUrlEncoded, и ошибка стала:

java.lang.IllegalArgumentException: @FieldMap parameters can only be used with form encoding. (parameter #2) for method 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) at java.lang.reflect.Proxy.invoke(Proxy.java:913) at $Proxy5.pushLocalChangesWithMultipartCall(Unknown Source)

p.s. POST - это мульт, я не могу использовать PUT

0
0
785
1

Ответы 1

Если вы хотите использовать Multipart, вам следует использовать @PartMap вместо @FieldMap.

Вот пример в другом ответе

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

Другие вопросы по теме