0 0

求教:CXF 实现的web service,VFP调用出错10

我用cxf实现了web service,用java客户端测试成功,但客户的生产系统是用VFP开发的,客户通过VFP访问我的web service时却报错,我自己用VFP进行测试,确认会报如下错误:

OLE IDispatch exception code 0 from Client: Client:Incorrect number of parameters supplied for SOAP request HRESULT=0x80070057: 参数不正确。
- Client:Unspecified client error. HRESULT=0x80070057: 参数不正确。

我将接口简化为只有一个test方法,该方法只传入一个字符串变量,返回一个字符串结果,但报错依旧。wsdl内容如下:

<wsdl:definitions xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.fitcolg.bepanda/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="StudentServiceImplService" targetNamespace="http://ws.fitcolg.bepanda/">
<wsdl:types>
<xsd:schema xmlns:tns="http://ws.fitcolg.bepanda/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://ws.fitcolg.bepanda/">
<xsd:element name="test" type="tns:test"/>
<xsd:complexType name="test">
<xsd:sequence>
<xsd:element minOccurs="0" name="username" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="testResponse" type="tns:testResponse"/>
<xsd:complexType name="testResponse">
<xsd:sequence>
<xsd:element minOccurs="0" name="testResult" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="testResponse">
<wsdl: part element="tns:testResponse" name="parameters"></wsdl: part>
</wsdl:message>
<wsdl:message name="test">
<wsdl: part element="tns:test" name="parameters"></wsdl: part>
</wsdl:message>
<wsdl: portType name="StudentService">
<wsdl: operation name="test">
<wsdl:input message="tns:test" name="test"></wsdl:input>
<wsdl: output message="tns:testResponse" name="testResponse"></wsdl: output>
</wsdl: operation>
</wsdl: portType>
<wsdl:binding name="StudentServiceImplServiceSoapBinding" type="tns:StudentService">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl: operation name="test">
<soap: operation soapAction="http://ws.fitcolg.bepanda/" style="document"/>
<wsdl:input name="test">
<soap:body use="literal"/>
</wsdl:input>
<wsdl: output name="testResponse">
<soap:body use="literal"/>
</wsdl: output>
</wsdl: operation>
</wsdl:binding>
<wsdl:service name="StudentServiceImplService">
<wsdl: port binding="tns:StudentServiceImplServiceSoapBinding" name="StudentServiceImplPort">
<soap:address location="http://localhost:8080/stu/ws"/>
</wsdl: port>
</wsdl:service>
</wsdl:definitions>

我测试的VFP代码如下:
         local loSoap
         loSoap.MSSoapInit('http://localhost:8080/stu/ws?wsdl')
         loSoap.test("tom" ) ----- 这一行报错,且调试得知未正常请求进入到webservice的后台方法

如果将loSoap.test("tom" )这一句的参数去掉,即变为:
         loSoap.test() ---- 则能进入到webservice的后台方法,且客户端没有报错

如果将loSoap.test()这一句的结果输出,即变为:
         messagebox(loSoap.test()) ---- 则客户端又报同样的错,但也能请求进入到webservice的后台方法


出错情况总结:
1、loSoap.test() --- 既不传入参,也不接收返回值,则没有报错,能正常调webservice方法
2、loSoap.test("tom" ) --- 传入参,则客户端报错,且没有调webservice方法
3、messagebox(loSoap.test()) --- 不传入参,但接收返回值,则能正常调webservice方法,但客户端报错

综上,只要没有参数传递,就正常,一有参数传入或接收,就客户端报错。

求教各位大侠了,先谢了!
2013年5月08日 10:00
目前还没有答案

相关推荐

    Springboot整合CXF发布Web service和客户端调用(用户和密码验证)

    而Apache CXF则是一个强大的Web服务框架,用于创建和消费Web服务。本教程将详细介绍如何利用Spring Boot与CXF进行集成,以发布Web服务并实现用户和密码验证的客户端调用。 首先,我们需要在Spring Boot项目中引入...

    apache-cxf-2.4.6.zip

    1. **JAX-WS支持**:CXF实现了JSR 224(JAX-WS 2.2),使得开发者可以使用注解来定义服务接口和服务实现,方便地创建SOAP Web服务。 2. **JAX-RS支持**:CXF同样实现了JSR 311(JAX-RS 1.1),支持RESTful Web服务...

    apache-cxf-2.4.1.rar_apache-cxf-2.4.1_cxf_web service

    5. **WS-I兼容性**:CXF致力于实现Web服务互操作性规范(Web Services Interoperability, WS-I),确保CXF创建的服务能与其他平台和服务顺利交互。 6. **工具集**:CXF提供了丰富的开发工具,包括代码生成器、WS-...

    CXF开发Web Service实例demo

    在"Web Service学习-CXF开发Web Service实例demo(一)"中,我们将专注于SOAP Web Service的实现。以下是一些关键步骤: 1. **创建服务接口**:首先,你需要定义一个Java接口,这个接口会成为你的Web Service接口。...

    Apache CXF Web Service Development

    压缩包中的"Apache CXF Web Service Development.pdf"很可能是关于CXF的详细教程或者指南,涵盖了从基础概念到高级特性的全面讲解。通过阅读这本书,开发者可以学习到如何有效地使用CXF,包括服务的创建、部署、测试...

    CXF实现WebServices_4

    4. **生成客户端代理**:CXF还提供了一种方便的方式生成客户端代码,这些代码可以像调用本地方法一样调用远程Web Service。这通过CXF的wsdl2java工具实现,它能从服务的WSDL(Web Service Description Language)...

    CXF Web Service & client

    - **WSDL(Web Service Definition Language)**:在CXF中,你可以基于WSDL文件生成服务端代码,也可以先编写Java接口和服务实现,然后由CXF自动生成WSDL。WSDL定义了服务的接口、消息格式和绑定方式。 - **JAX-WS...

    cxf框架实现webservice调用demo

    这个“cxf框架实现webservice调用demo”应该是为了演示如何使用CXF来发布和调用Web服务。下面我们将深入探讨CXF框架在实现Web服务中的关键知识点。 1. **CXF简介**: CXF全称CXF Commons eXtensible Framework,它...

    使用CXF和camel-cxf调用webservice

    本篇文章将详细介绍如何使用CXF和camel-cxf调用Web服务,以及这两个工具的核心功能和使用场景。 Apache CXF是一个全面的服务开发框架,它支持多种Web服务标准,如SOAP、WS-*协议栈、RESTful服务等。CXF提供了丰富的...

    webService(基于cxf)的完整例子

    在这个基于CXF的Web服务完整例子中,我们将深入探讨CXF的核心概念、配置、以及如何创建和调用Web服务。 1. **CXF框架介绍**:CXF,全称为"Code first eXtended Framework",最初由XFire项目发展而来,后与Apache ...

    实战Web Service —— 使用Apache CXF开发Web服务的教程

    **实战Web Service与Apache CXF开发** Web服务是一种在互联网上进行通信的标准协议,它允许应用程序之间进行数据交换。Apache CXF是一个开源框架,用于构建和部署Web服务,支持多种Web服务标准,如SOAP、RESTful ...

    最新版CXF的jar包

    Apache CXF是一个开源的Java框架,专注于简化和构建SOAP(Simple Object Access Protocol)和RESTful(Representational State Transfer)Web服务。最新版CXF的jar包对于开发基于Web的服务至关重要,特别是针对那些...

    apache-cxf-2.4.0

    5. **JAX-WS和JAX-RS规范实现**:CXF实现了Java API for XML Web Services (JAX-WS) 和Java API for RESTful Web Services (JAX-RS),为开发者提供了标准的接口来创建Web服务。 6. **强大的工具集**:CXF提供了一...

    Spring MVC、CXF、Web Service

    开发者可以使用Spring MVC的控制器方法调用CXF生成的Web服务,或者让CXF消费其他外部Web服务,实现业务逻辑的整合。 结合"spfws"这个压缩包文件名,我们可以推测这可能是一个关于Spring MVC、CXF和Web Service的...

    CXF Spring Web Service 程序

    - **客户端集成**:Spring也支持CXF的Web服务客户端,通过Spring的JAXB和WSClient支持,可以方便地创建和调用远程Web服务。 - **AOP支持**:Spring的AOP可以用于Web服务的事务管理、安全控制等,为Web服务添加高级...

    Apache CXF Web Service Development(源码)

    【标题】中的"Apache CXF Web Service Development"指的是使用Apache CXF框架进行Web服务开发的过程。这通常包括了创建服务接口、实现服务逻辑、配置服务端点、以及发布和调用服务等步骤。源码部分可能包含了示例...

    CXF Web Service 安全认证出错?求大牛解决

    当遇到"CXF Web Service安全认证出错"的问题时,通常涉及的身份验证、授权、加密等方面。以下是一些可能的原因和解决方案: 1. **身份验证错误**: - **基本认证**:如果使用HTTP的基本认证,确保提供的用户名和...

    CXF源码:CXF_Spring源码

    - **客户端配置**:在`CXFSpringClient`目录中,可能包含客户端如何调用CXF服务的代码,可能通过JAX-WS的`Service`类或者使用Spring的`WebServiceTemplate`。 3. **服务发布与消费** 在Spring环境中,CXF服务...

Global site tag (gtag.js) - Google Analytics