调用web service 出现了一个错误:Failed to get operation name from the incoming request

laidianren 2008-10-17 10:22:20
如题:
我用axis1.2调用bea weblogic9.2下的web service 的时候报错了,错误如下:

Exception in thread "main" AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
faultSubcode:
faultString: Failed to get operation name from the incoming request
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:Failed to get operation name from the incoming request
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 org.apache.xerces.parsers.SAXParser.endElement(SAXParser.java:1403)
at org.apache.xerces.validators.common.XMLValidator.callEndElement(XMLValidator.java:1480)
at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:1149)
at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
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.sx.webservice.client.test.main(test.java:46)
...全文
969 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgs1987ok 2011-03-29
  • 打赏
  • 举报
回复
asdf
java__king 2008-10-25
  • 打赏
  • 举报
回复
帮你顶下啦.
boboo_2000_0 2008-10-25
  • 打赏
  • 举报
回复
cal.setOperationName("operateAccount");这句写的有问题,你写成下面这个试一下:
cal.setOperationName(new QName("http://services","operateAccount"));
laidianren 2008-10-24
  • 打赏
  • 举报
回复
自己顶无罪!!!
laidianren 2008-10-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tiyuzhongxin789 的回复:]
重新生成WSDL,然后重新从WSDL编译类,试试。
[/Quote]

我都试了n次了,不行的
大家怎么就没人知道吗?顶一顶也有分的呀!!
tiyuzhongxin789 2008-10-19
  • 打赏
  • 举报
回复
重新生成WSDL,然后重新从WSDL编译类,试试。
laidianren 2008-10-18
  • 打赏
  • 举报
回复
怎么没有人给看看?这是为什么呢?

我要给帖子加分!!!
zhou02607 2008-10-17
  • 打赏
  • 举报
回复
重新编译WSDL
laidianren 2008-10-17
  • 打赏
  • 举报
回复

我的客户端调用程序片段:
....
public static void main(String[] args) throws Exception {
String endPoint = "http://localhost:7001/ServiceWeb/MaintainAccountService";
Service service = new Service();
Call cal = (Call) service.createCall();
cal.setTargetEndpointAddress(new URL(endPoint));

cal.setReturnType(XMLType.XSD_STRING);
cal.addParameter( new QName("http://www.openuri.org/","sysid"),XMLType.XSD_STRING,ParameterMode.IN );
cal.addParameter( new QName("http://www.openuri.org/","userid"),XMLType.XSD_STRING,ParameterMode.IN );
cal.addParameter( new QName("http://www.openuri.org/","appuserid"),XMLType.XSD_STRING,ParameterMode.IN );
cal.addParameter( new QName("http://www.openuri.org/","pwd"),XMLType.XSD_STRING,ParameterMode.IN );
cal.addParameter( new QName("http://www.openuri.org/","cmd"),XMLType.XSD_STRING,ParameterMode.IN );
String sysid = "11",userid = "test2",appuserid = "zhaohh",pwd = "1111111",cmd = "add";
cal.setOperationName("operateAccount");
String res = (String) cal.invoke( new Object[] {sysid,userid,appuserid,pwd,cmd} );
System.out.println("ssl="+res);

}
.....
laidianren 2008-10-17
  • 打赏
  • 举报
回复
下面是wsdl文件内容:


<?xml version="1.0" encoding="UTF-8" ?>
- <s0:definitions name="MaintainAccountServiceServiceDefinitions" targetNamespace="http://services" xmlns="" xmlns:s0="http://schemas.xmlsoap.org/wsdl/" xmlns:s1="http://services" xmlns:s2="http://schemas.xmlsoap.org/wsdl/soap/">
- <s0:types>
- <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://services" xmlns:s0="http://schemas.xmlsoap.org/wsdl/" xmlns:s1="http://services" xmlns:s2="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
- <xs:element name="operateAccount">
- <xs:complexType>
- <xs:sequence>
<xs:element name="sysid" type="xs:string" />
<xs:element name="userid" type="xs:string" />
<xs:element name="appuserid" type="xs:string" />
<xs:element name="pwd" type="xs:string" />
<xs:element name="cmd" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
- <xs:element name="operateAccountResponse">
- <xs:complexType>
- <xs:sequence>
<xs:element name="return" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
</s0:types>
- <s0:message name="operateAccount">
<s0:part element="s1:operateAccount" name="parameters" />
</s0:message>
- <s0:message name="operateAccountResponse">
<s0:part element="s1:operateAccountResponse" name="parameters" />
</s0:message>
- <s0:portType name="MaintainAccountService">
- <s0:operation name="operateAccount" parameterOrder="parameters">
<s0:input message="s1:operateAccount" />
<s0:output message="s1:operateAccountResponse" />
</s0:operation>
</s0:portType>
- <s0:binding name="MaintainAccountServiceServiceSoapBinding" type="s1:MaintainAccountService">
<s2:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
- <s0:operation name="operateAccount">
<s2:operation soapAction="" style="document" />
- <s0:input>
<s2:body parts="parameters" use="literal" />
</s0:input>
- <s0:output>
<s2:body parts="parameters" use="literal" />
</s0:output>
</s0:operation>
</s0:binding>
- <s0:service name="MaintainAccountServiceService">
- <s0:port binding="s1:MaintainAccountServiceServiceSoapBinding" name="MaintainAccountServiceSoapPort">
<s2:address location="http://localhost:7001/ServiceWeb/MaintainAccountService" />
</s0:port>
</s0:service>
</s0:definitions
zhou02607 2008-10-17
  • 打赏
  • 举报
回复
重新生成WSDL,然后重新从WSDL编译类,试试。
laidianren 2008-10-17
  • 打赏
  • 举报
回复
我都重新编译了10遍了,还是不行

67,537

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧