【发布时间】:2015-11-03 06:28:12
【问题描述】:
我有一个 ASP.NET Web API 网站,有时我只想查看HTTP GET 返回的数据。虽然我知道如何通过编程获取 XML 或 JSON,但我不知道在哪里更改浏览器的设置(IE、Firefox 和 Chrome)以请求 XML 或 JSON?
【问题讨论】:
标签: json xml asp.net-web-api
我有一个 ASP.NET Web API 网站,有时我只想查看HTTP GET 返回的数据。虽然我知道如何通过编程获取 XML 或 JSON,但我不知道在哪里更改浏览器的设置(IE、Firefox 和 Chrome)以请求 XML 或 JSON?
【问题讨论】:
标签: json xml asp.net-web-api
ASP.NET Web API 根据 Accept 标头返回 JSON 或 XML。
不同的浏览器有不同的默认Accept 标头。至于我:
火狐:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
text/xml 是最可取的,WebAPI 为 Firefox 返回 XML。
IE:
application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
铬:
*/*
由于 XML 和 JSON 同样可以接受,WebAPI 选择 JSON。
IE根据注册表键生成Accept标头值:
HKLM\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Accepted Documents
Firefox 将其存储在变量Network.http.accept.default中。
您可以在about:config 选项卡中更改它。
我没有找到关于 Chrome 的信息。或许,您可以使用 ModHeader 扩展来执行此操作。
【讨论】:
我正在使用 Visual Studio 2015 构建 WebAPI。 我正在使用 Firefox 来测试它。 我运行了基本项目并尝试调用以下 WebAPI 请求来取回一个对象(序列化为 JSON)。 当我通过 Firefox 进行调用时,我收到一个错误,因为 Firefox 请求 XML 并且 WebAPI 尝试将对象默认为 JSON,但没有自动生成 XML 的概念。
分辨率
要解决此问题,您必须转到 Firefox 的导航栏并输入:
about:config<ENTER>
您将看到一个警告屏幕。点击按钮继续。
然后您将看到可配置项目的列表。
我们想要network.http.accept.default。
如果您在顶部搜索栏中输入单词接受,最容易找到。
一旦你找到那个项目。双击它,您将能够对其进行编辑。 我们只想添加一个值,告诉它请求 JSON 作为默认值。 这个标头会告诉服务器 JSON 没问题。由于 WebAPI 测试没有设置返回的特定类型,因此允许浏览器对其进行控制。
当您双击该项目时,将弹出一个带有编辑框的对话框。 您只想将以下字符串添加到现有字符串的开头。
application/json,
确保给它一个尾随逗号,以将其与其他现有值分开。单击确定按钮。
一旦您进行了更改(单击“确定”完成更改),您就可以返回到原来的选项卡并再次调用 API 方法,它将返回您所期望的 JSON。
【讨论】: