【问题标题】:How to get files come from @Part List<MultipartBody.Part> post request from retrofit in WCF rest web service?如何从 WCF REST Web 服务中的改造中获取来自@Part List<MultipartBody.Part> 发布请求的文件?
【发布时间】:2019-05-31 17:55:29
【问题描述】:

我正在尝试将动态数量的图像发送到 WCF Web 服务。发送这个请求的方法是这样的:

@Multipart
@POST
Call<ResponseBody> sendImages(@Part List<MultipartBody.Part> img, @Url String url,@Part("Content-Type") String contentType);

这是发送图像的方法的实现:

public void sendImages(List<EvaluationDetail> evaluationDetails, int evalId, final ResultCallBack resultCallBack){
    ApiService apiService=AppSingleton.getInstance(context).getApiService();
    String Url=ApiService.Post_images+"/"+evalId+"/";
    String questionIds="";
    List<MultipartBody.Part> parts=new ArrayList<>();
    for(int i=0;i<evaluationDetails.size();i++) {
        if(evaluationDetails.get(i).getImage()!=null) {
            File file = new File(evaluationDetails.get(i).getImage());
            if (file != null) {
                String partName = "img" + "_" + evalId + "_" + evaluationDetails.get(i).getQuestionID();
                RequestBody requestFile = RequestBody.create(null,file);
                parts.add(MultipartBody.Part.createFormData(partName, file.getName(), requestFile));
                questionIds=questionIds+String.valueOf(evaluationDetails.get(i).getQuestionID());
            }
        }
    }
    if(questionIds!=null)
    apiService.sendImages(parts,Url+questionIds,"multipart/form-data").enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            resultCallBack.onGetResult(null);
        }

        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
            resultCallBack.onFailedGet();
        }
    });


}

我不知道 wcf Web 服务中的函数签名会是什么样子。我用谷歌搜索,但我找不到解决方案。 请帮帮我。

【问题讨论】:

    标签: android wcf retrofit2


    【解决方案1】:

    你为什么设置@Part("Content-Type") String contentType) 动态的?

    注意:-@Multipart 注释是 android 中的内容类型,它支持与 multipart/form-data(for web) 相同的属性。

    解决方案:- 从您的接口方法中删除 @Part("Content-Type") String contentType)

    【讨论】:

    • 谢谢我删除它。但我的主要问题是在服务器端,我不知道如何在 wcf 中获取这些 List 文件。
    • 我还没有编写服务器端代码 :) 我不知道如何从多部分请求中获取文件列表。
    • 对多个文件试试这个stackoverflow.com/questions/13296850/…
    猜你喜欢
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多