Ich brauche HTTP POST
einen komplexen Typ zu einem Web-Service (die ich nicht kontrolliere). Ich glaube, der Webdienst wurde mit einer älteren Version von ASP.NET MVC erstellt. Das Modell bindet Nutzdaten, die als form-url-encoded
formatiert sind.Post komplexen Typ formatiert als Form-URL-codiert mit ASP.Net HttpClient
Wenn ich folgendes feuere, funktioniert es perfekt. Wie Sie sehen können, habe ich manuell eine Sammlung von Schlüssel/Wert-Paaren erstellt.
Aber ich möchte dies nicht tun, ich möchte nur komplexe Typen senden, wenn ich kann.
var content = new ComplexType("some-username", "some-password", "some-product");
var response = new HttpClient().PostAsync(url, content).Result;
ich dort ein HttpRequestMessage<T>
zu sein glauben verwendet, aber das ist für
HttpClient.PostAsJsonAsync<T>(T value) sends “application/json” HttpClient.PostAsXmlAsync<T>(T value) sends “application/xml”
fallen gelassen worden, aber ich will nicht Json
oder XML
ich form-url-ecncoded
ohne lästiges senden möchten senden Konvertieren von komplexen Typen in Sammlungen von Schlüssel/Wert-Paaren.
Im Wesentlichen möchte ich auch die Antwort auf this question wissen, die Jaans stellt (Sein ist der zweite Kommentar zur zweiten Antwort).
Kann jemand bitte beraten.
Web API hat eine 'FormUrlEncodedMediaTypeFormatter', aber dieser Formatierer kann nicht "schreiben" und nur "lesen" kann. Daher bietet die Web-API keine Unterstützung für diese Funktion. –
Das ist eine echte Schande. Wer kennt eine gute Arbeit? –
Sie können wahrscheinlich einen benutzerdefinierten Formatierer von Carlos betrachten: http://code.msdn.microsoft.com/windowsdesktop/Converting-between-cda3c9a7, aber das bezieht sich auf die Konvertierung von JObject zu FormUrlEncoded. Ich mag es nicht, dies vorzuschlagen, aber Sie können wahrscheinlich Ihren komplexen Typ in ein JObject mit Json.net Serializer konvertieren und dann dieses JObject in formurlencoded konvertieren, wie im Link vorgeschlagen. –