【发布时间】:2020-07-18 11:10:32
【问题描述】:
尝试将 ArrayList 与图像和其他详细信息一起发送
选中复选框时获取列表项
ArrayList<String> intrest = new ArrayList<>();
switch (buttonView.getId()) {
case R.id.business:
if (business.isChecked()) {
interest.add(String.valueOf(business.getText()));
}
break;
case R.id.politics:
if (politics.isChecked()) {
interest.add(String.valueOf(politics.getText()));
}
break;
case R.id.entertainment:
if (entertainment.isChecked()) {
interest.add(String.valueOf(entertainment.getText()));
}
break;
服务器响应
{"message":"Created successfully","data":{"interest":[],"showAds":true,"description":"ghbjbjj",
"title":"title","link":"link","image": "imageURL"}}
接口类
@Multipart
@POST("/api/post")
Call<ResponseBody> createPost(
@Part("description") RequestBody description,
@Part("title") RequestBody title,
@Part("link") RequestBody link,
@PartMap Map<String, RequestBody> interest,
@PartMap Map data,
@Part MultipartBody.Part adsImage
);
@NonNull
private RequestBody createPartFromString(String descriptionString) {
return RequestBody.create(descriptionString,
okhttp3.MultipartBody.FORM);
}
Map<String, RequestBody> partMap = new HashMap<>();
for (int i = 1; i < interest.size(); i++) {
partMap.put("interest", createPartFromString(interest.get(i)));
}
Call<ResponseBody> call = RetrofitClient.getInstance()
.getApi()
.createPost(
createPartFromString(title),
createPartFromString(link),
partMap,
prepareFilePart("image", selectedImage)
);
除了 ArrayList 之外,其他所有内容都会发送到服务器。
如何将 ArrayList 作为一部分传递?
【问题讨论】:
-
在代码中看不到任何列表
-
@Joni 将列表添加到问题中
-
如何将列表附加到请求中?
-
调用正文中的partMap。
-
啊,我看到您只将列表的最后一个元素放入
partMap。服务器希望如何接收列表?它可以是多个部分,也可以是单个部分中的 JSON 编码列表?
标签: java android server retrofit2 endpoint