【发布时间】:2017-08-21 10:01:23
【问题描述】:
我有一个已设置为返回 JSONP 的 ASP.NET Web API 2 项目 (使用来自 GitHub (https://github.com/WebApiContrib) 的 ASP.NET Web API Contrib repo),现在当通过 jQuery 使用 API 时,我的 Web 应用程序中的一切看起来都很好。
但是,还有一个 windows 应用程序需要访问相同的数据,但我对如何在 c# 类中处理响应感到很茫然。
我有这段代码,当 API 返回纯 JSON 时,它运行良好(使用 JSON.NET):
public List<DropItem> GetAvailableDomains()
{
string jsonData = null;
using (WebClient wc = new WebClient())
{
jsonData = wc.DownloadString("http://foo.bar/api/core/getavailabledomains");
}
return JsonConvert.DeserializeObject<List<DropItem>>(jsonData);
}
但是,使用 JSONP,由于响应中带有回调函数等的开销,它根本无法识别响应数据。
有没有好办法处理这个问题?
【问题讨论】:
-
好方法:让您的 API 有选择地返回 JSON 或 JSONP(根据 GET 参数或标头)。不好的方式:
jsonData = jsonData.Replace("callback(", ""); jsonData = jsonData.Substring(0, jsonData.Length - 1);之类的东西(请不要) -
我也在考虑拥有它,我刚开始使用 WebAPI,使用 WCF 我脑子里已经有了这一切,但在这里我只是不知道如何将它放在适当的位置,以便API 将返回纯 JSON 或 JSONP。 :P 我已经用谷歌搜索并试图阅读如何实现它,但最终一无所获。