我正在开发一个应用程序,用户必须从列表中选择任意数量的国家/地区,我必须通过多部分发送所选的名称.
我没有上传任何文件和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",但经过一些挖掘后,我发现给定的例子相当混乱,我不确定如何实现它在我的代码中,无法找到甚至提到在多部分中发送数组的教程.
这样的事情根本不可能吗?