android 调用wcf json,使用 JSONP

使用 JSONP

03/30/2017

本文内容

JSON Padding (JSONP) 是一种在 Web 浏览器中启用跨站点脚本支持的机制。 JSONP 是围绕 Web 浏览器的功能而设计的,用于从检索当前所加载文档的站点之外的站点加载脚本。 该机制的工作原理是使用用户定义的回调函数名来填充 JSON 负载,如下面的示例所示。

callback({"a" = \\"b\\"});

在上例中,JSON 负载 {"a" = \\"b\\"} 包装在函数调用 callback 中。 必须已在当前网页中定义回调函数。 JSONP 响应的内容类型为 application/javascript 。

JSONP 不会自动启用。 若要启用 JSONP,请在某个 HTTP 标准终结点(javascriptCallbackEnabled 或 true)上将 WebHttpEndpoint 特性设置为 WebScriptEndpoint,如下面的示例所示。

可以在称为回调的查询变量中指定回调函数的名称,如下面的 URL 中所示。

http://baseaddress/Service/RestService?callback=functionName

调用时,该服务将发送如下响应。

functionName({"root":"Something"});

[ServiceContract]

[JavascriptCallbackBehavior(ParameterName = "$callback")]

public class Service1

{

[OperationContract]

[WebGet(ResponseFormat=WebMessageFormat.Json)]

public string GetData()

{

}

}

对于上面显示的服务,将发出如下请求。

http://baseaddress/Service/RestService?$callback=anotherFunction

调用时,该服务通过以下内容进行响应。

anotherFunction ({"root":"Something"});

HTTP 状态代码

具有 200 以外的 HTTP 状态代码的 JSONP 响应包括另一个参数,该参数使用 HTTP 状态代码的数字表示形式,如下面的示例所示。

anotherFunction ({"root":"Something"}, 201);

验证

启用 JSONP 后将执行以下验证:

如果启用了 javascriptCallback,请求中存在回调查询字符串参数,且将响应格式设置为 JSON,WCF 基础结构将引发异常。

如果请求包含回调查询字符串参数,但操作不是 HTTP GET,则将忽略回调参数。

如果回调名称为 null 或空字符串,则响应的格式不会设置为 JSONP。

请参阅

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值