小编Lar*_*pus的帖子

是否可以使用Retrofit通过Multipart发送String []?

我正在开发一个应用程序,用户必须从列表中选择任意数量的国家/地区,我必须通过多部分发送所选的名称.

我没有上传任何文件和String [],但没有路由上传信息而不是多部分,我对Web服务器的运行方式没有任何说法.

我试图简单地将它作为Array,ArrayList和JsonArray发送:

@Headers({
    "Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @Part("user[countries]") String[] countries);
Run Code Online (Sandbox Code Playgroud)

我也试过这个解决方案,但是我误解了它或者它不起作用.这是我尝试使用的代码:

ArrayList<String> countries = CountryManager.getInstance().getSelectedCountryIds();
RequestBody requestBody;
LinkedHashMap<String, RequestBody> hashMap = new LinkedHashMap<>();

for(int i = 0; i < countries.size(); i++) {
    requestBody = RequestBody.create(MediaType.parse("text/plain"), countries.get(i));
    hashMap.put("countries["+i+"]", requestBody);
}
Run Code Online (Sandbox Code Playgroud)

并相应地改变改造方法:

@Headers({
    "Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @PartMap() Map countries);
Run Code Online (Sandbox Code Playgroud)

但是在所有尝试中我都遇到了错误retrofit.RetrofitError:部分正文不能为空.

我还提到改造的ChangeLog提到"新的:@Part使用OkHttp 支持可迭代和数组参数MultipartBody.Part",但经过一些挖掘后,我发现给定的例子相当混乱,我不确定如何实现它在我的代码中,无法找到甚至提到在多部分中发送数组的教程.

这样的事情根本不可能吗?

android multipartform-data retrofit2

7
推荐指数
2
解决办法
6215
查看次数

标签 统计

android ×1

multipartform-data ×1

retrofit2 ×1