在 windows 应用程序中处理 JSONP 响应
Handling JSONP response in windows application
我有一个 ASP.NET Web API 2 项目已设置为 return JSONP
(使用来自 GitHub (https://github.com/WebApiContrib) 的 ASP.NET Web API Contrib 存储库),现在当使用 API 通过jQuery.
然而,还有一个 windows 应用程序需要访问相同的数据,但我完全不知道如何在 c# class.[=13 中处理响应=]
我有这段代码,当 API returned plain 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 它根本无法识别响应数据,因为响应中包含回调函数等的开销。
有什么好的处理方法吗?
成功了
public static void RegisterFormatters(MediaTypeFormatterCollection formatters)
{
var jsonp = new JsonpMediaTypeFormatter(formatters.JsonFormatter);
jsonp.MediaTypeMappings.Add(new QueryStringMapping("type", "jsonp", "application/json"));
GlobalConfiguration.Configuration.Formatters.Add(jsonp);
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("type", "json", "application/json"));
}
我有一个 ASP.NET Web API 2 项目已设置为 return JSONP (使用来自 GitHub (https://github.com/WebApiContrib) 的 ASP.NET Web API Contrib 存储库),现在当使用 API 通过jQuery.
然而,还有一个 windows 应用程序需要访问相同的数据,但我完全不知道如何在 c# class.[=13 中处理响应=]
我有这段代码,当 API returned plain 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 它根本无法识别响应数据,因为响应中包含回调函数等的开销。
有什么好的处理方法吗?
成功了
public static void RegisterFormatters(MediaTypeFormatterCollection formatters)
{
var jsonp = new JsonpMediaTypeFormatter(formatters.JsonFormatter);
jsonp.MediaTypeMappings.Add(new QueryStringMapping("type", "jsonp", "application/json"));
GlobalConfiguration.Configuration.Formatters.Add(jsonp);
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("type", "json", "application/json"));
}