Lar*_*pus 7 android multipartform-data retrofit2
我正在开发一个应用程序,用户必须从列表中选择任意数量的国家/地区,我必须通过多部分发送所选的名称.
我没有上传任何文件和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",但经过一些挖掘后,我发现给定的例子相当混乱,我不确定如何实现它在我的代码中,无法找到甚至提到在多部分中发送数组的教程.
这样的事情根本不可能吗?
我知道我迟到了这个答案.你可以@Query("someKey[]")用来在multipart中发送arraylist.赫雷斯是工作的榜样.
@Multipart
@POST("./")
Call<JsonElement> addSubEvent(@Part(EndAPI.USE_CASE) RequestBody useCase,
@Query("event_id[]") ArrayList<String> event_id,
@Query("user_id[]") ArrayList<String> user_id,
@Query("name[]") ArrayList<String> name,
@Query("date_time[]") ArrayList<String> date_time,
@Part("token") RequestBody token,
@Part MultipartBody.Part... profilePic);
Run Code Online (Sandbox Code Playgroud)
希望这将有助于寻求答案的人.
创建多部分列表以用作数组列表
List<MultipartBody.Part> descriptionList = new ArrayList<>();
descriptionList.add(MultipartBody.Part.createFormData("param_name_here", values));
Run Code Online (Sandbox Code Playgroud)
以下是改造服务接口中的功能。
@PUT("/")
@Multipart
Call<ResponseBody> uploadPhotos(
@Part MultipartBody.Part placeId,
@Part MultipartBody.Part name,
@Part List<MultipartBody.Part> desclist, // <-- use such for list of same parameter
@Part List<MultipartBody.Part> files // <-- multiple photos here
);
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助某人。欢呼...!
| 归档时间: |
|
| 查看次数: |
6215 次 |
| 最近记录: |