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。

不知道什么问题,有知道的麻烦告诉一下

 

四、源码下载

  附件:RestEasy_02_jsonp.zip

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。