我正在开发一个应用程序,在某个点上,用户必须从列表中选择任意数量的国家,然后我必须通过多部分发送所选的名称。
我没有上传任何文件与String[]一起,但如果不是多部分,就没有上传信息的路线,而且我无法控制Web服务器的操作方式。
我尝试将它简单地作为数组、ArrayList和JsonArray发送,例如:
@Headers({
"Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @Part("user[countries]") String[] countries);
我也尝试了这个解决方案,但我要么误解了它,要么它不起作用。这是我尝试使用的代码:
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);
}
并相应地改变翻新方法:
@Headers({
"Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @PartMap() Map countries);
然而,在我所有的尝试中,我都得到了错误信息retrofit.RetrofitError: Part body must not be null。
我也提到过,Retrofit的ChangeLog中提到了“新功能:支持使用OkHttp的MultipartBody.Part迭代和数组@Part参数”,但经过一番挖掘,我发现给出的示例相当令人困惑,以至于我不确定如何将其实现在我的代码中,并且无法找到任何教程甚至提到在多部分中发送数组。
这种事情是不可能的吗?