android - 一起改造请求@Part 和@FieldMap
问题描述
我想向服务器发送一个发布请求,我有多个键值参数和一个文件列表,如下所示:
@FormUrlEncoded
@POST("index.php")
Call<MyObjResponse> myCall(@Part List<MultipartBody.Part> files, @FieldMap Map<String, String> params);
我收到一个错误:
java.lang.IllegalArgumentException:@Part 参数只能与多部分编码一起使用。(参数#1)retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:752)处retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:743)处retrofit2.ServiceMethod$Builder.parameterError(ServiceMethod)的方法IRestApi.pushLocalChangesWithMultipartCall .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:
我试图@Multipart
代替@FormUrlEncoded
并且错误变为:
java.lang.IllegalArgumentException:@FieldMap 参数只能与表单编码一起使用。(参数#2)retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:752)处retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:743)处retrofit2.ServiceMethod$Builder.parameterError(ServiceMethod)的方法IRestApi.pushLocalChangesWithMultipartCall .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:
psPOST
是一个我不能使用的 multPUT
解决方案
如果你想使用,Multipart
那么你应该使用@PartMap
而不是@FieldMap
这是另一个答案中的示例
推荐阅读
- ruby - 为什么当 File 对象是新的时,flock() 的工作方式不同?
- r - 如何使用默认 Web 代理设置在 R 中配置 curl 包?
- php - 尝试更新 sql 数据库中的日期时如何解决此错误?
- c++ - 如何使用带有附加参数的 lambda 函数的 std::transform
- mfc - 如何让 CIPAddressCtrl 支持使用句点在元组字段之间切换
- c# - C# 相当于 python 中的 "%r"%stringName。将常规字符串转换为逐字字符串
- javascript - 为什么不“等待”等待?
- watson-iot - WatsonIOT 平台:在选项卡中添加新卡时显示但不显示事件
- javascript - 以下示例之间的差异(随机数)
- batch-file - 批处理文件 - 为什么两个 goto 标签在 folder1 和 2 都存在时执行