für meine WebAPI OData-Anwendung, ich versuche, meinem Client (Browser) die Entscheidung zu geben, welches Format die Datenausgabe sein sollte. als $ format ist noch nicht in WebAPI OData, im mit Raghuramn dem Beispiel hier umgesetzt: https://gist.github.com/raghuramn/5556691
var queryParams = request.GetQueryNameValuePairs();
var dollarFormat = queryParams.Where(kvp => kvp.Key == "$format").Select(kvp => kvp.Value).FirstOrDefault();
if (dollarFormat != null)
{
request.Headers.Accept.Clear();
request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse(dollarFormat));
// remove $format from the request.
request.Properties[HttpPropertyKeys.RequestQueryNameValuePairsKey] = queryParams.Where(kvp => kvp.Key != "$format");
}
Dies funktioniert für JSON ($ format = application/json; OData = fullmetadata) und JSON-Licht (Format = application/json; odata = light) aber bisher nicht für xml.
Wenn ich $ format = application/XML zum querystring hinzufüge, gibt es noch zu json Licht aus. Wie erzwinge ich XML-Ausgabe?
EDIT:
auch wenn ich Kraft xml in Fiddler durch Senden Content-type: application/xml und Accept: application/xml mit der Bitte, die Antwort einfach Listen: Inhaltstyp: application/json; odata = minimale Metadaten; Streaming = wahr; charset = UTF-8
EDIT 2:
Accept: application/atom + xml ist in der rohen Reaktion auf Ausgabe xml scheinen. Leider wirft, "application/atom + xml" eine Format in:
request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/atom+xml"));
Haben Sie 'text/xml' probiert? – Markus
ja, dass auch json ... – stefjnl
FYI, Raghuramn Beispiel wird fehlschlagen, wenn Sie die $ format = application/atom + xml querystring, da der Wert von dollarFormat wird "application/atom xml", ergibt sich die "+" in die URL – Schandlich