WebAPI OData $格式转换为xml

2023-11-27

对于我的 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。

如果我添加$格式=应用程序/XML对于查询字符串,它仍然输出为 json light。如何强制输出 XML?

EDIT:

即使我强制 XML在 Fiddler 中通过发送内容类型:application/xml and 接受:应用程序/xml对于请求,响应仅列出: 内容类型:application/json; odata=最小元数据;流=真;字符集=utf-8

EDIT 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");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebAPI OData $格式转换为xml 的相关文章

随机推荐

  • 如何在Python中的qrcode中心插入标志?

    我在 python 中使用 pyqrcode 模块并用它生成 QR 码 如何将徽标放在二维码的中央 代码看起来像这样 import pyqrcode data Hello World number pyqrcode create data
  • 为什么 C# 中 Int32 结构体的 MinValue 前面有两个减号?

    当我右键单击时int在我的代码中并选择 转到定义 Visual Studio 将打开一个标题为 Int32 来自元数据 的文件 该文件包含以下行 public const Int32 MinValue 2147483648 双 符号是什么意
  • Delphi XE5中的Android后台服务

    我需要为android编写一些服务 使用德尔福XE5 火猴 该服务需要在后台运行并定期读取短信收件箱 将其写入 sqlite DB 短信备份 我知道如何读取短信以及如何将其写入数据库 但我不知道如何使应用程序作为服务在后台工作 有任何想法吗
  • C++ 中的 Python 函数装饰器相当于什么?

    我正在将 Python 指标库移植到 C Python 库提供的一个 API 是函数装饰器 可以轻松记录函数的计时数据 通过将函数定义修改为 timed timing foo def foo foo result foo 本质上变成了 st
  • 为 docker 镜像创建一个图标

    我创建了我的应用程序的 docker 映像 songkong songkong 但我注意到它没有图标 而许多其他 docker 映像却有 如何向 docker 映像添加图标 我的 docker 镜像可在 docker hub 上找到 并非所
  • “发明原则”视频中的 Javascript 树源代码

    Bret Victor 的 Inventing on Principle 视频 http vimeo com 36579366 给我很大启发 另外 我对用 Javascript 绘制的那棵树非常着迷 我没有做过太多图形编程 在我的整个职业生
  • 使用 Box2D 模拟“牛顿万有引力定律”

    我想模拟牛顿万有引力定律使用 Box2D 我浏览了手册 但找不到执行此操作的方法 基本上我想做的是将几个物体放置在太空中 零重力 并模拟运动 有小费吗 实现起来非常容易 for int i 0 i lt numBodies i b2Body
  • 当 git tfs 无法创建合并提交时,如何纠正它

    当 git tfs 无法创建合并提交时 它说warning this changeset 7504 is a merge changeset But it can t have been managed accordingly becaus
  • QT版本未正确安装,请运行make install

    我从下载的副本安装了 QT creatorqt creator linux x86 opensource 2 6 1 bin using sudo qt creator linux x86 opensource 2 6 1 bin 在Ubu
  • jQuery 更改所有子项的 id 属性

    我需要一些帮助来弄清楚如何编写一些 jQuery 代码 我需要动态克隆一个表 onclick 但随后我每次都需要更改表及其子元素的 id 由于该表可能有很多子项 因此手动执行此操作会很困难 我需要一种方法来更改所有子 所有后代 元素的 id
  • 如何在MySQL中从DATETIME中分离DATE和TIME?

    我正在存储一个DATETIME表中的字段 每个值看起来都像这样 2012 09 09 06 57 12 我正在使用这个语法 date Y m d H i s 现在我的问题是 在获取数据时 如何同时获取日期和时间分别地 使用单个 MySQL
  • 使用 JavaScript 打印多个 PDF 文件

    我想知道如何通过一次打印点击打印多个 PDF 文件 我可以轻松打印单个 PDF 文件 但当文件较多时我不知道如何打印 提前致谢 您可以致电print 在代码中多次出现 导致文件被一个接一个地打印 function PrintAll var
  • 为什么像“volatile int * p”这样的指向易失性的指针有用?

    volatile就是告诉编译器不要优化引用 这样每次读 写都不会使用寄存器中存储的值 而是进行真正的内存访问 我可以理解它对于某些普通变量很有用 但不明白如何volatile影响指针 volatile int p some addr int
  • 如何将 Bullet 物理应用于绘制的 Opengl 3d 形状

    我只是想知道是否有一种方法可以将子弹物理应用于 opengl 绘制的对象 使用 glVertex3f 或带有 glVertexAttribPointer 的三角形网格创建 我目前正在使用 jogl 和 jbullet 将物理应用到我的 3D
  • 尝试播放声音时出现“play() 失败,因为用户没有先与文档交互”错误 (javascript/html)

    我正在尝试使用 javascript 在网页上播放声音 但每当我这样做时 我都会收到上述错误 这是我的代码 if thing startsWith 0 var a new Audio audio mp4 a play 此外 如果您打开控制台
  • 如何设置 Elastic beanstalk Windows 应用程序的文件夹权限?

    我目前正在构建一个 C WebApi 2 应用程序 我将其上传到 Amazon Elastic Beanstalk 实例进行部署 到目前为止 我取得了成功 并且在我的本地计算机上 我刚刚完成了文件上传功能的测试 以便客户端上传图像 它的方式
  • 在 VirtualBox 来宾中运行 perf

    我的教授要求我跑步 perf stat e mem loads mem stores test 为了让我找到 C 文件的内存加载和存储 我在 VirtualBox Linux 来宾中执行此操作 问题是perf说这是无效或不受支持的事件 任何
  • 在 Clion 中启用 Cuda 代码索引

    我正在使用 Clion 开发 cuda 程序 当扩展名是 h 时 代码突出显示可以正常工作 但是 当它更改为 cuh 时 Clion 仅将新文件视为纯文本文件 并且我无法启用代码突出显示 我知道完整的 Cuda 工具链是不可能的 所以我不希
  • 为 Outlook 2007 构建表单

    我刚刚了解到 Outlook 表单的概念 我不知道这是否能解决我的问题 但这就是我想做的 我希望能够让公司内部的员工填写一些表格 那么我所要做的就是创建表单并将其推送到他们的 Outlook 中 他们填写表格后 我可以以某种方式捕获数据吗
  • WebAPI OData $格式转换为xml

    对于我的 WebAPI OData 应用程序 我试图让我的客户端 浏览器 决定数据输出应该采用什么格式 作为 format尚未在 WebAPI OData 中实现 我在这里使用 Raghuramn 的示例 https gist github