ASP.NET MVC4 WebAPI und Veröffentlichung von XML-Daten
Fehlt mir ein trick mit der neuen webapi - ich bin versucht zu senden eine xml-Zeichenfolge durch eine post-Anforderung und nicht viel Glück.
Das vordere Ende ist mit jQuery so:
$(document = function () {
$("#buttonTestAPI").click(function () {
var d = " <customer><customer_id>1234</customer_id></customer>";
$.ajax({
type: 'POST',
contentType: "text/xml",
url: "@Url.Content("~/api/Customer/")",
data: d,
success: function (result) {
var str = result;
$("#output").html(str);
}
});
});
});
Mein controller ist ziemlich einfach im moment - nur die Standardeinstellungen für die post-Aktion - versuchen, zurückzugeben, was übergeben wurde, in:
public string Post(string value)
{
return value;
}
Allerdings "Wert" ist immer wieder null. Das seltsame ist, wenn ich meine Daten ändern in jquery, um so etwas wie dieses:
d = "<customer_id>1234</customer_id>";
Dann bekomme ich den Wert "value" in meinem controller 1234.
Wie erhalte ich Zugang zu den komplexeren xml-string in meinen controller?
InformationsquelleAutor Thomas | 2012-05-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgenden wird Ihnen erlauben, zu Lesen, eine raw XML-Nachricht per POST an eine Web-API-Methode:
Können Sie Debuggen und inspizieren den Körper, Header, etc. und sehen die raw-XML geschrieben. Ich verwendet Fiddler ' s Komponisten, um ein HTTP POST und das funktioniert gut.
InformationsquelleAutor atconway
Sie Inhalte senden-Typ des
text/xml
aber Sie haben festgelegt, Ihre parameter alsstring
. Idealerweise Ihre XML abgebildet werden sollen, zu einem Klasse so dass es sein kann deserialised.Also, wenn Sie brauchen raw xml dann ist es noch nicht unterstützt. Web-API, die gegenwärtig ist ausgerichtet für die Serialisierung MediaTypeFormatters und fehlende einfache Art Formatierer, aber Sie können leicht gebaut werden.
Ist dies eine minimal Umsetzung solcher Formatierer unterstützt nur gelesen, in Ihrem Fall und basiert auf beta installer (und nicht nightly source-code, da es erheblich verändert hat):
Und um es zu verwenden, fügen Sie es einfach auf Formatierer-Sammlung:
var reader = new StreamReader(readStream);var text = await reader.ReadToEndAsync();
InformationsquelleAutor Aliostad
Alle, die sich für eine aktualisierte version von Aliostad die Antwort von oben aus der beta-Version auf den RC von asp.net mvc 4 web api (kleinere änderungen führte zu einer leichten Nacharbeit für mich).
InformationsquelleAutor BMac
Was löste das Problem für mich war, hinzufügen:
(
SubscriberController
ist meine Klasse, die erweitertApiController
, und die oben ist ein statischer Konstruktor, so wird es einmal ausgeführt).Nicht sicher, ob es auch notwendig ist, aber ich habe die
[FromBody]
- Attribut, um meine parameter, etwa so:Das tolle an dieser Methode ist, dass Sie sich nahtlos verarbeitet sowohl XML-und JSON-Eingabe.
InformationsquelleAutor dario_ramos