0

我有一个非常奇怪的情况(可能只对我来说)。我开发了一个 RESTful API。默认情况下,它根据客户端在标头中发送的内容类型以 JSON/XML/TEXT 的形式返回结果。

现在客户说他只想将响应设置为默认的 XML。我的意思是客户端不会在标头中发送任何内容类型,默认情况下它将以 XML 格式发送请求。

当我从浏览器访问这个 API 时,它以 XML 形式返回,但是当客户端的应用程序请求它时,它默认返回 JSON 结果。他们通过将内容类型放入标头中以 XML 形式获得结果,但他们不想这样做,并且希望在默认情况下获得 XML 结果。

我希望我对此很清楚。如果没有,请告诉我。

任何帮助,将不胜感激。谢谢

[更改] 我很想知道当我在服务器上收到请求时是否可以通过某种方式修改请求标头。

它在 MVC3、C# 中。

4

2 回答 2

0

您无法更改请求标头,只需查询它们。

我猜你在你的控制器中将你的结果作为一个简单的字符串返回,不是吗?

而且,您正在根据从请求中读取的内容类型在结果之间切换,不是吗?

客户端调用附带的内容类型是什么?

更新:

看看这个页面:

http://aleembawany.com/2009/03/27/aspnet-mvc-create-easy-rest-api-with-json-and-xml/

这是 MVC 先前版本的解决方案,但它会让您了解所需的解决方案:

根据请求内容类型调整动作结果

于 2012-11-20T08:52:06.343 回答
0

我在这里找到答案并发布。我刚刚删除了除 xml 类型之外的其他返回类型,如下所示:

void ConfigureApi(HttpConfiguration config)
{
    // Remove the JSON formatter
    config.Formatters.Remove(config.Formatters.JsonFormatter);

    // or

    // Remove the XML formatter
    config.Formatters.Remove(config.Formatters.XmlFormatter);
}

有关更多详细信息,请按照以下链接 http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization

谢谢

于 2012-11-22T08:34:37.680 回答