2016-06-13 4 views
1

Ich habe ein C# -Skript in SSIS, das Daten über die API an eine dritte Partei sendet (was bei weitem die schlechteste API ist, mit der ich je umgegangen bin!).Wie fügt man einem HTTP-Feld in einer POST-Anfrage einen weiteren Wert hinzu?

Wie auch immer, es ist extrem empfindlich, wie es Daten empfangen sollte. Die API erhält CSV-Gehalt, mit dem folgenden Arbeits:

Content-Type: text/plain; charset=utf-8 
Content-Disposition: form-data; name="values"; filename="name.txt" 

"test1073R","2016-02-23T00:00","0.00","0.00" 

Aber dies nicht:

Content-Type: text/plain; charset=utf-8 
Content-Disposition: form-data; name="values" 

"test1073R","2016-02-23T00:00","0.00","0.00" 

Der Unterschied ist, dass die filename="name.txt" gesendet werden muss.

Diese Daten werden direkt von einer Variablen gesendet - sie wird nicht zuerst in eine Zeichenfolge geschrieben. Unten ist mein Code, der die HTTP-Anfrage erstellt, aber ich bin mir nicht sicher, wie man filename="name.txt" zu der Anfrage hinzufügt. Irgendwelche Ideen?

using (var client = new HttpClient()) 
{ 
    using (var multipartFormDataContent = new MultipartFormDataContent()) 
    { 
     var values = new[] 
     { 
      new KeyValuePair<string, string>("customerid", Variables.BeonicCustomerId), 
      new KeyValuePair<string, string>("username", Variables.BeonicUsername), 
      new KeyValuePair<string, string>("password", Variables.BeonicPassword), 
      new KeyValuePair<string, string>("values", dataSb.ToString()) 
     }; 

     foreach (var keyValuePair in values) 
     { 
      multipartFormDataContent.Add(new StringContent(keyValuePair.Value), 
       String.Format("\"{0}\"", keyValuePair.Key)); 
     } 

Antwort

2

Ich glaube, Sie nicht die ganze Inhalt Disposition auf folgende Weise hinzufügen:

multipartFormDataContent.Headers.Add("Content-Disposition", "form-data; name=\"values\"; filename=\"name.txt\""); 

Von dem, was ich verstehe, was Sie geschrieben hat, müssen Sie die Dateinamen als Teil der Content-Disposition so Sie können es über die Kopfzeile hinzufügen.

+0

Ta. Hat den Trick gemacht – Lock

Verwandte Themen