Web services 调用SOAP web服务时出现错误AxisFault错误代码:90010001
我已经从WSDL/WSDLURL创建了SOAP web服务客户端,并尝试调用该服务。 我得到了这个错误跟踪Web services 调用SOAP web服务时出现错误AxisFault错误代码:90010001,web-services,soap,wsdl,soap-client,webservice-client,Web Services,Soap,Wsdl,Soap Client,Webservice Client,我已经从WSDL/WSDLURL创建了SOAP web服务客户端,并尝试调用该服务。 我得到了这个错误跟踪 AxisFault faultCode: 90010001 faultSubcode: faultString: Mandatory field is not set in EAI_SOAPINPUT; Element -> Environment.eaiCommon.BTID, Environment.eaiCommon.Header.ChannelID, Envi
AxisFault
faultCode: 90010001
faultSubcode:
faultString: Mandatory field is not set in EAI_SOAPINPUT; Element -> Environment.eaiCommon.BTID, Environment.eaiCommon.Header.ChannelID, Environment.eaiCommon.Header.RequestUUID, Environment.eaiCommon.Header.ServiceRequestId, Environment.eaiCommon.Header.ServiceRequestVersion
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:Mandatory field is not set in EAI_SOAPINPUT; Element -> Environment.eaiCommon.BTID, Environment.eaiCommon.Header.ChannelID, Environment.eaiCommon.Header.RequestUUID, Environment.eaiCommon.Header.ServiceRequestId, Environment.eaiCommon.Header.ServiceRequestVersion
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(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
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 uk.co.mclsoftware.www.HunterII.WebServices.MatchingSoapStub.match(MatchingSoapStub.java:116)
at uk.co.mclsoftware.www.HunterII.WebServices.MatchingSoapProxy.match(MatchingSoapProxy.java:50)
at com.huntermatching.test.TestClient.main(TestClient.java:14)
它要求我输入必填字段。
这个错误是什么
来自wsdl的消息部分:
<wsdl:message name="subHeader">
<wsdl:part element="xsd:subHeader" name="subHeader" />
</wsdl:message>
<wsdl:message name="MatchSoapIn">
<wsdl:part element="tns:Match" name="parameters" />
</wsdl:message>
<wsdl:message name="MatchSoapOut">
<wsdl:part element="tns:MatchResponse" name="parameters" />
</wsdl:message>
<wsdl:portType name="MatchingSoap">
<wsdl:operation name="Match">
<wsdl:input message="tns:MatchSoapIn" />
<wsdl:output message="tns:MatchSoapOut" />
</wsdl:operation>
</wsdl:portType>
您是否完全填充了请求对象?这似乎是由于错误调用导致的服务器生成的故障。请添加调用代码和至少WSDL的消息部分,以便对此进行更深入的挖掘。Hi@BigMike,我已经从WSDL添加了消息标记,感谢replyI可能是错误的,但我们没有手动准备请求头对象,它是从存根类生成的。如果我应该用必需的参数准备请求,那么请告诉我如何从我的服务中准备请求对象。通常你必须在生成的请求对象上设置字段。生成的存根只是构建SOAP信封,而不是内部消息。一旦有了请求对象,就应该检查它是否有setter,并相应地填充字段。提示:在eclipse中,分配请求对象后,检查所有集合。。。方法。您应该看到填充tns:Match类型所需的所有setter。@BigMike,我添加了客户端代码,我正在使用代理类对象调用匹配服务,但我没有找到其他setter方法。我应该如何调用我的服务方法,请提供任何链接或代码。
public class TestMatchClient {
public static void main(String[] args) {
try {
MatchingSoapProxy matchObj = new MatchingSoapProxy();
String controlXml="TestXmlString",batchXml="TestBatchXmlString",uName ="MyUserName",pass = "MyPass";
matchObj.match(controlXml, batchXml, uName, pass);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}