RestEasy 3.x 系列之三:jsonp
跨域请求解决方法(JSONP, CORS)提到解决跨域可以使用jsonp,RestEasy自带jsonp的拦截器
一、参考http://stackoverflow.com/questions/5350924/how-enable-jsonp-in-resteasy里面的方法:
1、In your web.xml add:
<context-param> <param-name>resteasy.providers</param-name> <param-value>org.jboss.resteasy.plugins.providers.jackson.JacksonJsonpInterceptor</param-value> </context-param>
2、Make sure you have a WEB-INF/jboss-deployment-structure.xml with:
<jboss-deployment-structure> <deployment> <dependencies> <module name="org.jboss.resteasy.resteasy-jackson-provider" services="import" annotations="true"/> </dependencies> </deployment> </jboss-deployment-structure>
3、Make sure you have a resteasy-jackson-provider dependency in your pom.xml, something like:
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson-provider</artifactId> <scope>provided</scope> </dependency>
二、但是RestEasy的文档提到的是使用:
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-json-p-provider</artifactId> <version>3.0.9.Final</version> </dependency>
三、最后我自己试验了一下
1、json和jsonp都在resteasy-jackson2-provider里面,pom.xml:
<dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jackson2-provider</artifactId> <version>3.0.9.Final</version> </dependency>
2、web.xml:
<context-param> <param-name>resteasy.providers</param-name> <param-value>org.jboss.resteasy.plugins.providers.jackson.Jackson2JsonpInterceptor</param-value> </context-param>
但是还是有问题,最后使用
GET http://localhost:8080/RestEasy_02_Jsonp/json/product/get?callback=aaa
返回:aaa({"name":"iPad 3","age":999}
注意后面少了一个")",他返回的是json object
但是
POST http://localhost:8080/RestEasy_02_Jsonp/json/product/post?callback=back
返回:back(Product created : com.tutu.domain.Product@5ad557c2) 正常,他返回的是string。
不知道什么问题,有知道的麻烦告诉一下
四、源码下载
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。