Retrofit 2 ne peut pas télécharger un fichier avec deux paramètres de chaîne distincts supplémentaires

Lire modifier au bas de la question pour une autre solution possible jusqu'à ce que la solution est trouvée.

C'est un post de fichier avec deux paramètres à l'aide de Facteur. Je suis en train de faire la même chose avec de rénovation, mais recevoir des BadRequest.

Facteur Paramètres:

Retrofit 2 ne peut pas télécharger un fichier avec deux paramètres de chaîne distincts supplémentaires

Chrome Réseau Post Détails:
Retrofit 2 ne peut pas télécharger un fichier avec deux paramètres de chaîne distincts supplémentaires

Maintenant, voici comment je le fais dans Android, mais à défaut:

Rénovation Interface De Service:

@Multipart
@POST("jobDocuments/upload")
Call<ResponseBody> upload(@Part("file") MultipartBody.Part file,@Part("folder") MultipartBody.Part folder,@Part("name") MultipartBody.Part name);

C'est mon @arrière-plan de la méthode à exécuter les requêtes de réseau de service ci-dessus généré

CustDataClient service =
            ServiceGenerator.createService(CustDataClient.class);
    File file = new File(fileUri.getPath());
    //create RequestBody instance from file
    RequestBody requestFile =
            RequestBody.create(MediaType.parse("multipart/form-data"), file);

    MultipartBody.Part fileData =
            MultipartBody.Part.createFormData("file", fileName, requestFile);
    MultipartBody.Part folder =
            MultipartBody.Part.createFormData("folder", "LeadDocuments");
    MultipartBody.Part name =
            MultipartBody.Part.createFormData("name", fileName);
    //finally, execute the request
    Call<ResponseBody> call = service.upload(fileData,folder,name);
    try {
        Response<ResponseBody> rr = call.execute();
        ResponseBody empJobDocsResult = rr.body();//Bad Request here :(
        Log.v("Upload", "success");
    } catch (Exception ex) {
        Log.e("Upload error:", ex.getMessage());
    }

Voici mon Api Web Méthode:

 [Route("upload")]
    [HttpPost]
    public IHttpActionResult Upload()
    {
        if (HttpContext.Current.Request.Files.AllKeys.Any())
        {
            //Get the uploaded image from the Files collection
            var httpPostedFile = HttpContext.Current.Request.Files["file"];

            if (httpPostedFile != null)
            {
                //Validate the uploaded image(optional)
                var folder = HttpContext.Current.Request.Form["folder"];
                var fileName = HttpContext.Current.Request.Form["name"];
                fileName = string.IsNullOrEmpty(fileName) ? httpPostedFile.FileName : fileName;
                //Get the complete file path
                var fileSavePath = Path.Combine(HttpContext.Current.Server.MapPath("~/Files/" + folder), fileName);

                //Save the uploaded file to "UploadedFiles" folder
                httpPostedFile.SaveAs(fileSavePath);

                return Ok(new OkMessage { Message = "File uploaded successfully", Path = "/Files/" + folder + "/" + fileName });
            }
        }

        return BadRequest("File not uploaded");
    }

S'il vous plaît aider où je suis mal et comment y parvenir, est-il une alternative simple à la rénovation?

[Modifier]
Ce code fonctionne avec succès, Grâce à koush/ion:

Ion.with(getContext())
                            .load("POST", "http://www.dgheating.com/api/jobDocuments/upload")
                            .setMultipartParameter("folder", "LeadDocuments")
                            .setMultipartParameter("name", fileName)
                            .setMultipartFile("file", new File(imagePath))
                            .asJsonObject()
                            .setCallback(...);

source d'informationauteur ahmadalibaloch