如何从@Part List <multipartbody.part>中获取文件,这些请求来自WCF Rest Web服务中的改造?

时间:2019-01-05 10:41:54

标签: android wcf retrofit2

我正在尝试将动态数量的图像发送到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 个答案:

答案 0 :(得分:0)

  

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

注意:-@Multipart注释是android中的一种内容类型,它支持与multipart / form-data(用于网络)相同的属性。

解决方案:-从界面方法中删除@Part("Content-Type") String contentType)