学习webServices时出现一个问题,客户端这边,用的是axis1.4,在编写客户端调用的时候出现异常
try {
String endpoint = "http://localhost:8080/webServiceTest/services/HelloServiceHttpPort";
Service service = new Service();
Call call = null;
call = (Call) service.createCall();
call.setOperationName(new QName(
"", "sayHello"));
call.setTargetEndpointAddress(new java.net.URL(endpoint));
HelloRequestParameter helloRequest = new HelloRequestParameter();
Hello hello = new Hello();
hello.setName("liu");
hello.setStr("你好");
helloRequest.setName("ww");
helloRequest.setHello(hello);
try{
HelloResponseParameter helloResponse = (HelloResponseParameter) call.invoke(new Object[] { helloRequest });
System.out.println("return value is " + helloResponse.getStrOut());
}catch(Exception e){
e.printStackTrace();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
异常
org.xml.sax.SAXException: Invalid element in com.webService.helloService.schema.HelloRequestParameter - arg0
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2938)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.test.TestWebServices.main(TestWebServices.java:35)
但是我直接用生成的文件去调用却可以
HelloServiceInterface hsi = new HelloServiceInterfaceLocator();
try {
HelloServicePortType hspt = hsi.getHelloServiceHttpPort();
HelloRequestParameter helloRequest = new HelloRequestParameter();
Hello hello = new Hello();
hello.setName("liu");
hello.setStr("你好");
helloRequest.setName("ww");
helloRequest.setHello(hello);
HelloResponseParameter helloResponse = hspt.sayHello(helloRequest);
System.out.println("return value is " + helloResponse.getStrOut());
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我看了一下自动生成的HelloServiceHttpBindingStub类,其中方法
public com.webService.helloService.schema.HelloResponseParameter sayHello(com.webService.helloService.schema.HelloRequestParameter helloParameter) throws java.rmi.RemoteException {
if (super.cachedEndpoint == null) {
throw new org.apache.axis.NoEndPointException();
}
org.apache.axis.client.Call _call = createCall();
_call.setOperation(_operations[0]);
_call.setUseSOAPAction(true);
_call.setSOAPActionURI("urn:helloService:webService:com#sayHello");
_call.setEncodingStyle(null);
_call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
_call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
_call.setOperationName(new javax.xml.namespace.QName("", "sayHello"));
setRequestHeaders(_call);
setAttachments(_call);
try { java.lang.Object _resp = _call.invoke(new java.lang.Object[] {helloParameter});
if (_resp instanceof java.rmi.RemoteException) {
throw (java.rmi.RemoteException)_resp;
}
else {
extractAttachments(_call);
try {
return (com.webService.helloService.schema.HelloResponseParameter) _resp;
} catch (java.lang.Exception _exception) {
return (com.webService.helloService.schema.HelloResponseParameter) org.apache.axis.utils.JavaUtils.convert(_resp, com.webService.helloService.schema.HelloResponseParameter.class);
}
}
} catch (org.apache.axis.AxisFault axisFaultException) {
throw axisFaultException;
}
}
这和我出异常那个调用,感觉没什么区别。 求解?
问题补充:wanghuanqiu 写道
你这是用的axis1吧,换个axis2
还有最好把你的service接口看一下
是用的axis1
public interface HelloServicePortType extends java.rmi.Remote {
public com.webService.helloService.schema.HelloResponseParameter sayHello(com.webService.helloService.schema.HelloRequestParameter helloParameter) throws java.rmi.RemoteException;
}
问题补充:wanghuanqiu 写道
如果你的webservice发布成功了,你在代码中把命名空间加上再试一下
不懂,怎么加?
问题补充:wanghuanqiu 写道
如果你的webservice发布成功了,你在代码中把命名空间加上再试一下
http://lujin55.iteye.com/blog/1441890
这个地址有代码,你看一下,解压密码123456
相关推荐
【标题】:“C# WebService调用测试工具” 在IT领域,Web Service是一种基于网络的、松散耦合的软件组件,它允许不同系统之间的数据交换。C# WebService调用测试工具是专为开发者设计的,用于测试和调试Web Service...
本文将深入探讨在Java环境中调用WebService的五种主要方式:Axis、CXF、HttpClient、MyEclipse反向生成以及XFire。 1. Axis:Apache Axis是最早且广泛使用的SOAP库,用于创建和消费Web服务。使用Axis调用WebService...
【Webservice调用工具】 Webservice调用工具是专门用于测试和交互Web服务的软件,它们使得开发者能够方便地发送请求并接收响应,以便验证Web服务的功能和性能。Web服务通常基于SOAP(Simple Object Access Protocol...
本示例主要关注的是如何使用Java进行WebService调用,这在企业级应用开发中非常常见,特别是在需要跨平台集成时。以下是关于这个主题的一些详细知识点: 1. **WebService的基本概念**: WebService是一种基于开放...
【标题】:“webService调用实例 Demo” 在IT行业中,Web Service是一种常见的应用程序接口(API)形式,它允许不同系统间的交互,无论它们是用何种编程语言或运行在何种操作系统上。本“webService调用实例 Demo”...
【标题】"超简单的webservice调用"涉及的是在Java环境下使用Hutool库进行Web Service接口调用的基础知识。Web Service是一种基于网络的、松散耦合的软件组件交互方式,它允许不同系统间的应用共享数据和服务。在这个...
7. **异常处理**:在调用过程中可能出现网络错误、服务端错误等问题,需要编写适当的异常处理代码来捕获并处理这些问题。 在实际应用中,Web Service接口调用还涉及到安全性、性能优化和版本控制等话题。例如,可以...
### SAP-WEBSERVICE调用案例 #### 一、引言 随着企业信息化建设的深入发展,SAP作为企业管理软件的佼佼者,在业务流程整合与优化方面扮演着至关重要的角色。而Web Service作为一种标准的跨平台服务交互方式,使得...
WebService调用测试工具,支持大部分wsdl调用。
在本主题中,我们将深入探讨如何使用WSDL生成WebService接口以及编写Test调用方法进行测试。 1. WSDL基础 WSDL文件是一个XML文档,它描述了服务的位置(endpoint)、使用的消息格式(message)和服务提供的操作...
在VC++中调用WebService服务是一项常见的任务,尤其在跨平台通信、系统集成或扩展应用程序功能时。WebService是一种基于Web的、松耦合的服务,它使用标准的HTTP协议进行通信,并通过XML(eXtensible Markup Language...
### WebService调用常见问题详解 #### 一、概述 在使用Visual Studio 2008进行Web开发的过程中,开发者可能会遇到一个常见的问题:在建立了Web Service应用程序之后,尝试在ASP.NET环境中调用该服务时,往往会出现...
相信大家在调用rest webservice通常使用httpclient.该示例代码是使用httpconnection的形式,以POST和GET两种方式提交调用REST WebService。在项目中一直使用的工具类,分享给大家
**WebService调用技术文档** **一、WebService简介** WebService是一种基于开放标准的Web应用程序,它能够提供跨平台、跨语言的互操作性。通过使用XML(可扩展标记语言)进行数据交换,SOAP(简单对象访问协议)...
ODI(Oracle Data Integrator)是一种数据集成平台,提供了webservice接口,允许用户通过webservice调用ODI方案执行,从而实现数据的同步。 在本文档中,我们将通过 Java 应用程序调用 ODI webservice,实现数据的...
短信验证码Webservice调用是现代Web应用中常见的一种安全验证机制...总之,短信验证码Webservice调用是提升用户体验和系统安全的重要手段。通过合理的API设计和安全实践,我们可以构建一个高效、可靠的短信验证码系统。
本文将详细介绍 Oracle 调用 Webservice 的实现过程,包括 Webservice 的基本概念、 Java 编写简单的 WebService 实例、Oracle 服务器端配置、加载 JAR 包、测试调用 PHP Webservice 和 Java Webservice 等内容。...
挺好用的webservice开发工具.直接输入webservice地址,然后输入入参,即可调用.
**MVC调用WebService详解** 在C#的MVC(Model-View-Controller)框架中,调用WebService是一项常见的任务,通常用于实现客户端与服务器之间的数据交互。在本例中,我们将探讨如何在MVC应用中使用JavaScript进行异步...
3. 处理异常是必不可少的,因为网络通信和Web服务调用都可能抛出异常。 通过 Axis 框架,开发者可以轻松地创建和消费Web服务,实现系统的互联互通。在实际项目中,可以根据需求选择不同的Web服务框架,如JAX-WS...