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));
}
Ta. Hat den Trick gemacht – Lock