我正在開發一個應用程序,在這個應用程序中,用戶必須從列表中選擇任意數量的國家,並且必須通過多部分發送選定的名稱。是否可以使用Retrofit通過Multipart發送String []?
我沒有上傳任何文件和字符串[],但沒有路由上傳信息,如果它不是多部分,我沒有任何關於Web服務器如何操作的說法。
我試圖簡單地將其作爲一個數組,ArrayList和JsonArray這樣:
@Headers({
"Connection: Keep-Alive",
})
@Multipart
@PUT("/user/{id}")
String updateUser(@Path("id") int userId, @Part("user[countries]") String[] countries);
我也嘗試this solution,但我要麼誤解了它或它不工作。下面是我嘗試使用代碼:
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所有嘗試:身體部分不能爲空。
我也提到ChangeLog改造提到「新:支持迭代和使用OkHttp的MultipartBody.Part
陣列@Part
參數」,但經過一些挖掘,我發現給定的例子很混亂,以至於我不確定如何在我的代碼中實現它,並且無法找到甚至提到以多部分發送數組的教程。
這樣的事情簡直不可能嗎?
使用PartMap註解的解決方案似乎是正確的。我在一些應用中使用它,並且工作正常。你確定所有的國家都不是零? – Pablo