2017-06-15 1 views
0

Je veux consommer une API REST avec webclient, voici mon code et son lancerdonnées post WebClient d'émission

« validationObjective » non envoyé dans la demande.

Mais j'ai ajouté ce validationobjective dans mon poste quelqu'un

peut aider à ce sujet?

WebClient webClient = new WebClient(); 
string boundary = "------------------------" + DateTime.Now.Ticks.ToString("x"); 
webClient.Headers.Add("Content-Type", Convert.ToString("multipart/form-data; validationObjective=\"test\";boundary=") + boundary); 
var fileData = webClient.Encoding.GetString(xmlFile); 

var package = string.Format("--{0}" + Environment.NewLine + "Content- 
    Disposition: form-data; name=\"ccdaFile\";validationObjective=\"test\"; 
    filename=\"{1}\"" + Environment.NewLine+ "Content-Type: {2}" 
    + Environment.NewLine + "{3}" + Environment.NewLine + "--{0}--" 
    + Environment.NewLine, boundary, "filename", "multipart/form-data", fileData); 

var nfile = webClient.Encoding.GetBytes(package); 
var resp = webClient.UploadData("url", "POST", nfile); 
var bytesAsString = Encoding.ASCII.GetString(resp); 
+0

Ceci est complètement hors sujet de votre question, mais utilisez svp StringBuilder pour la concaténation de chaîne plutôt. – Ortund

+1

Cela dépend entièrement de la façon dont cette API est implémentée. Nous ne pouvons rien dire d'utile à ce sujet. Ma conjecture cependant est qu'il l'attend en tant qu'élément de données de formulaire, pas dans l'en-tête Content-Type. – CodeCaster

+0

Ai-je manqué quelque chose ici, qu'est-ce qu'un "validationObjective"? BTW Je ne vois aucun avantage dans un StringBuilder dans ce scénario – Liam

Répondre

0

J'ai résolu le problème. Nous devons envoyer le paramètre en querystring comme

webClient.QueryString.Add("referenceFileName", "sdfdsF"); 
webClient.QueryString.Add("validationObjective", "sdfdsF"); 

Cela fonctionne pour moi!