gpt4 book ai didi

c# - 返回 XML 而非 JSON 的 RESTful Web 服务

转载 作者:太空狗 更新时间:2023-10-29 22:33:50 24 4
gpt4 key购买 nike

我有这个简单的网络服务,现在它只是查看部件号是否为 A123456789,然后返回型号。这将被连接到数据库以检查零件号然后返回实际型号的逻辑所取代。但此时我只需要它返回一些虚拟 JSON 数据。但是,当我使用 Fiddler 并查看 http://localhost:PORT/Scan/Model/A123456789 的网络浏览器中的调用时,它会返回此

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Model: CVS-1679</string>

但是当我在同一个 URI 的 fiddler 中执行 GET 时,我得到了

"Model: CVS-1679"

仅在textview标签下。

当我将 ResponseFormat 设置为 JSON 时,为什么返回的是 XML(在浏览器中和 Fiddler 中的文本)而不是 JSON?

我的代码:

[WebGet(UriTemplate = "Model/{partno}", ResponseFormat = WebMessageFormat.Json)]
public string Model(string partno)
{
if (partno == "A123456789")
{
string modelno = "CVS-1679";
return "Model: " + modelno;
}
else
{
string modelno = "CVS-1601";
return "Model: " + modelno;
}
}

最佳答案

ASP.NET web 服务默认返回 XML/SOAP 消息。如果您想返回 Json 字符串,则需要使用 [ScriptService] 属性装饰 Web 服务。这会通知 IIS 该服务将由 ASP.NET AJAX 调用使用。这些属性是 System.Web.Extensions 的一部分。

您可以通过使用 ScriptMethod 属性装饰 web 方法来定义 web 方法响应格式。

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

然而,即使在通过这些属性装饰了 webservice 和 webmethod 之后,响应仍然可以是 XML 格式。当发出请求的客户端未将请求 header 内容类型设置为“application/json”时,会发生此行为。

在使用 JavaScriptSerializer 返回从 webmethod 序列化到 Json 字符串的方法调用之前

使用 Fiddler 调试 WebService

使用fiddler测试webservice非常简单。下图是如何调用返回 json 字符串的 Web 服务的示例。 请注意,请求内容类型设置为application/json。 webserivce 期望的参数在Request Body 部分中提到。 enter image description here

注意请求内容类型设置为application/json。

关于c# - 返回 XML 而非 JSON 的 RESTful Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8343553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com