WebAPI OData $格式为xml
对于我的WebAPI OData应用程序,我试图让我的客户端(浏览器)决定数据输出应该是什么格式。 由于$ format尚未在WebAPI OData中实现,我在这里使用Raghuramn的示例: 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"); }
这适用于JSON($ format = application / json; odata = fullmetadata)和JSON light(format = application / json; odata = light),但到目前为止还不适用于xml。
如果我将$ format = application / XML添加到查询字符串,它仍然输出到json light。 我如何强制XML输出?
编辑:
即使我通过发送带有请求的Content-type:application / xml和Accept:application / xml 强制在Fiddler中使用xml ,响应只会列出:Content-Type:application / json; 的OData = minimalmetadata; 流= TRUE; 字符集= utf-8的
编辑2:
接受:application / atom + xml似乎确实在原始响应中输出xml。 不幸的是,“application / atom + xml”抛出FormatException:
request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/atom+xml"));
设置请求ContentType而不是AcceptHeader就可以了:
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/atom+xml");
感谢搜索此问题提供的关键字request.Headers.Accept.Add
和MediaTypeWithQualityHeaderValue
,我发现了一个CodeProject文章实际上提供了正确添加Accept标头并解决相同问题的语法:
this.Request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/atom+xml"));
而不是抛出FormatException的MediaTypeWithQualityHeaderValue.Parse("application/atom+xml")
。
上述就是C#学习教程:WebAPI OData $格式为xml分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/985612.html