我有一个Web服务(C#,非WCF),应将JSON返回到移动应用程序客户端,它具有如下API函数:
[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public Animal AnimalInformation(int animalID) {
Animal animal = new Animal();
animal.name = AnimalNameForID(animalID);
animal.color = AnimalColorForID(animalID);
return animal;
}
尽管其响应格式设置为JSON,但它在浏览器中显示的响应仍然是XML,如下所示:
<Animal>
<Name>Vicky</Name>
<Color>Grey</Color>
</Animal>
根据该线程,我一直在寻找答案,发现这与客户端的接收格式有关,并且该线程建议使用这段JavaScript代码来查看JSON返回值:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8;",
url: "http://MyWebServiceURL",
data: JSON.stringify({ ParameterName: "DataToSend" }),
dataType: "json",
success: function (data, textStatus, jqXHR) {
//do something
},
error: function (jqXHR, textStatus, errorThrown) {
//fail nicely
}
});
我无法使这段js代码正常工作,但总是失败。
我的问题:
1,我的浏览器中是否可以设置任何设置,以便它从Web服务中请求JSON而不是XML?
2,如果没有,是否有(简单)替代解决方案?我正在为我的应用程序构建此Web服务,但是我尚未开始使用该应用程序,因此请不要建议将应用程序用作WS的测试客户端。
检查一下:stackoverflow.com/a/19564022/487940
本质上,您希望将内容沿Response冲刷并设置响应的ContentType:
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod(UseHttpGet=true ,ResponseFormat = ResponseFormat.Json)]
public void HelloWorld()
{
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Clear();
Context.Response.ContentType = "application/json";
HelloWorldData data = new HelloWorldData();
data.Message = "HelloWorld";
Context.Response.Write(js.Serialize(data));
}
}
public class HelloWorldData
{
public String Message;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句