可能的重复:
JSONP 与 MVC 4 WebApi
我的 WebAPI 有一个 get 方法,如下所示:
private T Get<T>(string uri)
{
T result = default(T);
bool isSuccess = true;
client
.GetAsync(uri)
.ContinueWith(task =>
{
// EnsureStatus
isSuccess = task.Result.IsSuccessStatusCode;
task
.Result
.Content
.ReadAsAsync<T>()
.ContinueWith(t => result = t.Result)
.Wait();
})
.Wait();
return result;
}
结果以 JSON 格式生成,但我想要 JSONP 格式。
我读过ReadAsSync
仅处理内置媒体格式化程序。那么有什么方法可以改变它来处理 JsonP 吗?
大肆盗窃这个重复的....
为了实现你想要的,你需要三件事:
- 添加一个
media formatter
输出 JSONP
- 注册媒体格式化程序(传统上通过 global.asx 完成)
- 确保客户端请求 jsonP。
你可以窃取这个 JSONP 媒体格式化程序.
然后,您需要注册媒体格式化程序。您可以使用以下代码片段以编程方式执行此操作:
var config = GlobalConfiguration.Configuration;
config.Formatters.Insert(0, new JsonpMediaTypeFormatter());
由于您显然不使用 global.asax,因此您需要确保格式化程序以某种方式注册。您没有提供足够的信息来说明如何做到这一点,但我怀疑明智地放置 IF 语句和指示注册的静态变量可以让您到达那里。
我仍然不太知道你正在使用什么类型的客户端,但如果它是 jquery ,类似下面的东西会让你到达那里:
$.ajax({
url: 'http://myurl.com',
type: 'GET',
dataType: 'jsonp',
success: function (data) {
alert(data.MyProperty);
}
})
重要的部分是accept
发送的标头与您闪亮的新 jsonp 格式化程序正在侦听的接受标头相匹配。我认为最重要的两个选择是:application/javascript
or text/javascript
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)