发送ArrayList 作为Android改造的一部分

问题描述 投票:0回答:1

尝试与图像和其他详细信息一起发送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作为一部分传递?

java android server retrofit2 endpoint
1个回答
0
投票

(我还没有尝试过,但是这个[[应该有效)

更改请求原型定义,以使interestPart而不是PartMap:

@Part("interest") List<String> interest,

然后将兴趣作为字符串列表传递。无需将字符串转换为RequestBody,Retrofit会为您完成。

Call<ResponseBody> call = RetrofitClient.getInstance() .getApi() .createPost( createPartFromString(title), createPartFromString(link), interest, prepareFilePart("image", selectedImage) );

© www.soinside.com 2019 - 2024. All rights reserved.