`
qll3609120
  • 浏览: 56846 次
社区版块
存档分类
最新评论

ajax跨域调用restful webservice几种方式及webservice中文乱码问题

阅读更多

一、ajax跨域调用restful webservice

       1)jsonp的方式。略

        2)配置拦截器,设置允许那些origin可以发起跨域请求,具体代码:

        

public class TestInterceptor extends AbstractPhaseInterceptor<Message> {
    public TestInterceptor() {
        super(Phase.RECEIVE);
    }

    public TestInterceptor(String phase) {
        super(phase);
    }

    @Override
    public void handleMessage(Message message) throws Fault {
    	if (message.getDestination() != null) {
            System.out.println(message.getId() + "#" + message.getDestination().getMessageObserver());
        }
        if (message.getExchange() != null) {
            System.out.println(message.getExchange().getInMessage() + "#" + message.getExchange().getInFaultMessage());
            System.out.println(message.getExchange().getOutMessage() + "#" + message.getExchange().getOutFaultMessage());
        }
        HttpServletRequest request = (HttpServletRequest) message.get(  
                AbstractHTTPDestination.HTTP_REQUEST);//这句可以获取到request 
        HttpServletResponse response = (HttpServletResponse) message.get(  
                AbstractHTTPDestination.HTTP_RESPONSE);//这句可以获取到request 
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
    }
}

 

 

  • Access-Control-Allow-Origin 为允许哪些Origin发起跨域请求. 这里设置为"*"表示允许所有。
  • Access-Control-Allow-Methods 为允许请求的方法.
  • Access-Control-Max-Age 表明在多少秒内,不需要再发送预检验请求,可以缓存该结果
  • Access-Control-Allow-Headers 表明它允许跨域请求包含content-type头,这里设置的x-requested-with ,表示ajax请求

然后在把这个拦截器加入到配置文件里面

 

<bean id="testServiceInterceptor" class="com.fpi.prd.test.util.TestInterceptor" />

    <bean id="service" class="com.fpi.prd.test.service.Impl.UserRestFulServiceImpl" />

    <jaxrs:server id="testServiceContainer" address="/test">
        <jaxrs:serviceBeans>
            <ref bean="service" />
        </jaxrs:serviceBeans>
        <jaxrs:providers>  
            <bean class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider"/>  
        </jaxrs:providers>  
        <jaxrs:inInterceptors>
            <ref bean="testServiceInterceptor" />
        </jaxrs:inInterceptors>
        <jaxrs:extensionMappings>
            <entry key="json" value="application/json" />
            <entry key="xml" value="application/xml" />
        </jaxrs:extensionMappings>
        <jaxrs:languageMappings>
            <entry key="en" value="en-gb"/>
        </jaxrs:languageMappings>
    </jaxrs:server>

 二、请求webservice时候,返回的数据出现中文乱码问题,我们同样可以在拦截器里面配置

 

response.setCharacterEncoding("UTF-8");
1
1
分享到:
评论

相关推荐

    Jersey RESTful WebService框架学习(一)

    【标题】"Jersey RESTful WebService框架学习(一)" 在Web服务开发中,RESTful API已经成为主流,它强调资源的表示和交互,通过HTTP协议进行通信。Jersey是Java平台上的一个开源框架,专门用于构建RESTful服务,它是...

    JS调用WEBSERVICE的demo

    JavaScript(JS)调用Web Service是一种常见的跨平台通信方式,特别是在网页应用中,需要与后端服务进行数据交互时。Web Service通常采用SOAP、RESTful等接口标准,为客户端提供API来实现远程功能调用。在这个"JS...

    java调用webservice(20211103125800).rar

    Java调用WebService是一种常见的在Java应用中集成外部服务或系统的方式。WebService是一种基于XML的、平台和语言无关的标准,允许不同系统之间的数据交换。在这个场景中,我们将深入探讨Java如何利用各种技术栈来...

    WebService 身份验证方法及DEMO(.Net版)

    WebService作为一种标准的跨平台、跨语言的信息交换方式,其身份验证机制确保了只有合法的用户或应用程序才能访问服务。本文将深入探讨两种常见的WebService身份验证方法:基于SOAP Headers的身份验证和集成Windows...

    WebService源码和笔记.zip

    6. **跨域问题及解决方案**:在Web环境中,由于同源策略限制,跨域调用WebService会遇到问题,笔记可能会讲述如何通过CORS(跨源资源共享)或其他方式解决。 7. **RESTful服务对比**:对比RESTful API与传统的SOAP ...

    js调用.net webservice

    在JavaScript(JS)中调用.NET Web Service是跨平台通信的一种常见方式,它允许Web应用程序与服务器端的.NET服务进行交互,实现数据的交换。本文将深入探讨如何使用JavaScript来调用.NET Web Service,以及涉及的...

    webservice例子及跨域访问配置

    Web服务(WebService)是一种基于互联网的、平台独立的交互方式,允许不同系统之间进行数据交换。这个例子和跨域访问配置的主题将引导我们深入理解如何创建和调用Web服务,以及如何解决在JavaScript中跨域访问的问题...

    JS调用webservice源码

    在实际项目中,可能还需要考虑错误处理、异步编程策略(如Promise或async/await)、以及可能的跨域问题(CORS)。当你熟练掌握了这些基础后,可以进一步探索AJAX、RESTful API、JSONP等更高级的Web通信技术。

    webservice 服务及调用例子,简单入门及避坑.rar

    Web服务(WebService)是一种基于开放标准的、平台和语言无关的接口,允许不同系统之间进行交互和数据交换。本教程将带你了解Web服务的基本概念、工作原理,以及如何通过简单的例子进行开发和调用,帮助你快速入门并...

    WebService实例mootools.zip

    3. **SOAP与RESTful**:WebService有两种主要的通信协议,分别是简单对象访问协议(SOAP)和 Representational State Transfer (REST)。SOAP通常使用XML格式传输数据,而REST则更倾向于使用JSON。根据实例,可能会...

    cxf-webservice-rest:这是一个cxf rest的webservice demo可以通过ajax 跨域直接访问不需要jsonp形式

    在这个“cxf-webservice-rest”项目中,开发者已经创建了一个RESTful服务端点,该端点可以被AJAX调用。AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下更新部分网页的技术,常用于创建动态...

    基于webservice的js动态调用函数

    【基于Webservice的JS动态调用函数】是一个关键的技术实践,它允许JavaScript在客户端与服务器端的Web服务进行交互,实现在不刷新整个页面的情况下,动态更新和处理数据。这一技术广泛应用于各种Web应用程序,尤其是...

    WebService操作数据库实例

    WebService是Web服务的一种标准协议,它允许不同系统之间进行数据交换和互操作,跨越网络上的各种平台。在本实例中,我们将深入探讨如何使用C#语言来开发一个基于WebService的操作数据库的应用。 首先,理解...

    Nodejs调用WebService的示例代码

    在浏览器端运行调用WebService的Node.js代码时,可能需要解决同源策略导致的跨域问题。可能还需要配置CORS(跨源资源共享)策略,以便允许浏览器向远程服务发送请求。 需要注意的是,调用WebService的示例代码使用...

    WebService整合spring

    Spring提供了多种集成WebService的方式,如Spring-WS(面向契约的)、Apache CXF(面向服务的)等。Apache CXF是目前最常用的,它不仅支持SOAP协议,还支持RESTful风格的服务,同时与Spring无缝集成,使得配置和服务...

    接收图片和文字的 ASP.NET WebService

    5. 配置WebService以允许跨域访问,因为RESTful服务可能会被不同源的客户端调用。 在`UploadImageAndDescription`方法中,我们需要处理以下关键技术点: - 数据接收:使用`HttpPostedFileBase`类来获取上传的图片...

    webservice+axis2+myeclipse+tomcat

    通过以上步骤,你将能够成功地使用 Axis2 和 MyEclipse 在 Tomcat 上创建、部署 WebService,并生成及使用客户端代码进行调用。阅读提供的文档《MyEclipse+AXIS2.doc》和《WebService之axis2的使用.doc》将更深入地...

    asp.net AJAX博客源码

    ASP.NET AJAX博客源码是一个基于Web服务(Web Service)和.NET AJAX技术的博客系统实现,主要目的是为了提供一种异步交互的用户体验。该系统利用AJAX(Asynchronous JavaScript and XML)技术,允许用户在不刷新整个...

    Javascript调用Webservice的多种方法

    通过以上两种方式,我们可以有效地使用JavaScript结合XMLHttpRequest来调用WebService。需要注意的是,在实际应用中还需考虑错误处理、跨域问题以及兼容性等问题。此外,随着技术的发展,现代Web开发更倾向于使用...

    webservice

    Web服务(WebService)是一种基于互联网的、平台独立的交互方式,允许不同系统之间进行数据交换和功能调用。在你提供的信息中,标题为"Webservice",表明这是一个关于Web服务的项目,可能包含一个或多个Web服务接口...

Global site tag (gtag.js) - Google Analytics