如何从 WCF REST Web 服务中的改造中获取来自@Part List<MultipartBody.Part> 发布请求的文件?

Posted

技术标签:

【中文标题】如何从 WCF REST Web 服务中的改造中获取来自@Part List<MultipartBody.Part> 发布请求的文件?【英文标题】:How to get files come from @Part List<MultipartBody.Part> post request from retrofit in WCF rest web service? 【发布时间】: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 服务中的函数签名会是什么样子。我用谷歌搜索,但我找不到解决方案。 请帮帮我。

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

谢谢我删除它。但我的主要问题是在服务器端,我不知道如何在 wcf 中获取这些 List 文件。 我还没有编写服务器端代码 :) 我不知道如何从多部分请求中获取文件列表。 对多个文件试试这个***.com/questions/13296850/…

以上是关于如何从 WCF REST Web 服务中的改造中获取来自@Part List<MultipartBody.Part> 发布请求的文件?的主要内容,如果未能解决你的问题,请参考以下文章

WCF 的复杂 UriTemplate

使用 KissXML 处理 wcf Rest Web 服务 - 我应该如何处理命名空间问题

如何从基于 REST 的 WCF 服务中读取授权标头?

如何使用 .Net 4.0 REST WCF 服务?

如何从 WCF-REST API 服务创建 Swagger 规范

如何将图像另存为在 retrofit2 中发送到 wcf Web 服务的流中的图像