Java 如何更改WSDL文件?
我正在使用SOAP客户端。我正在接收来自服务器的响应,可以在tcpdump中看到,但解析失败。因此,我无法得到想要的结果。我尝试使用SOAP-UI来获得一些见解。现在,来自服务器的响应和来自SOAP-UI的响应之间的差别很小。若我在测试模拟的传入响应中做了这个小更改,那个么应用程序将成功地开始工作 来自服务器的响应失败-Java 如何更改WSDL文件?,java,web-services,soap,wsdl,jax-ws,Java,Web Services,Soap,Wsdl,Jax Ws,我正在使用SOAP客户端。我正在接收来自服务器的响应,可以在tcpdump中看到,但解析失败。因此,我无法得到想要的结果。我尝试使用SOAP-UI来获得一些见解。现在,来自服务器的响应和来自SOAP-UI的响应之间的差别很小。若我在测试模拟的传入响应中做了这个小更改,那个么应用程序将成功地开始工作 来自服务器的响应失败- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> &l
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<PromoPackRequestBO xsi:noNamespaceSchemaLocation="PromoPackRequestBO.xsd" xmlns:cus="http://siebel.com/CustomUI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:idea="http://www.siebel.com/xml/IDEA%20WSS%20Create%20SR%20IO">
<messageHeader>
<headerInfo>
<CIRCLE_ID>DL</CIRCLE_ID>
<CHANNEL_TYPE>SIVR</CHANNEL_TYPE>
<TRACE_ID/>
<LOB/>
<OPERATION_NAME>CreateSR</OPERATION_NAME>
</headerInfo>
<errorInfo>
<ERRORCODE/>
<ERRORMESSAGE/>
</errorInfo>
<operationStatusCode>
<OPERATION_STATUS_CODE>SUCCESS</OPERATION_STATUS_CODE>
</operationStatusCode>
</messageHeader>
<messageBody>
<businessInputData>
<msisdnNumber>9911008174</msisdnNumber>
<promoId>PR_otp_vp_5</promoId>
<typeOfOperation/>
<effectiveFromDate/>
<productId/>
<remarks/>
<param1/>
<param2/>
<param3/>
</businessInputData>
<businessOutputData>
<srNo>1-1362952280</srNo>
<param1/>
<param2/>
</businessOutputData>
</messageBody>
</PromoPackRequestBO>
</soapenv:Body>
</soapenv:Envelope>
编辑-I
我的相关客户代码-
URL endpointURL = new URL(SegmentationConfigurationProps.PROMO_PACK_URL);
PromoPackTraderServiceMsgSOAP_HTTP_ServiceLocator service = new PromoPackTraderServiceMsgSOAP_HTTP_ServiceLocator();
PromoPackTraderServiceMsgSOAP_HTTP_BindingStub bindingStub = new PromoPackTraderServiceMsgSOAP_HTTP_BindingStub(
endpointURL, service);
// Filling all values
bindingStub.promoPackRequest(promoPackRequestBO); //This throws exception.
//Axis1生成的客户端代码
public void promoPackRequest(
com.ibm.idea.PromoPackTraderService.holders.RequestResponseTypeHolder promoPackRequestBO)
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("");
_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("", "PromoPackRequest"));
setRequestHeaders(_call);
setAttachments(_call);
try
{ // This line throws exception.
java.lang.Object _resp = _call.invoke(new java.lang.Object[] { promoPackRequestBO.value });
if (_resp instanceof java.rmi.RemoteException)
{
throw (java.rmi.RemoteException) _resp;
}
else
{
extractAttachments(_call);
java.util.Map _output;
_output = _call.getOutputParams();
try
{
promoPackRequestBO.value = (com.ibm.idea.PromoPackTraderService.RequestResponseType) _output
.get(new javax.xml.namespace.QName("http://idea.ibm.com/PromoPackTraderService",
"PromoPackRequestBO"));
}
catch (java.lang.Exception _exception)
{
promoPackRequestBO.value = (com.ibm.idea.PromoPackTraderService.RequestResponseType) org.apache.axis.utils.JavaUtils
.convert(_output.get(new javax.xml.namespace.QName(
"http://idea.ibm.com/PromoPackTraderService", "PromoPackRequestBO")),
com.ibm.idea.PromoPackTraderService.RequestResponseType.class);
}
}
}
catch (org.apache.axis.AxisFault axisFaultException)
{
System.out.println("Axis: Resp MEssg: " + _call.getResponseMessage());
extractAttachments(_call);
java.util.Map _output;
_output = _call.getOutputParams();
try
{
promoPackRequestBO.value = (com.ibm.idea.PromoPackTraderService.RequestResponseType) _output
.get(new javax.xml.namespace.QName("http://idea.ibm.com/PromoPackTraderService",
"PromoPackRequestBO"));
}
catch (java.lang.Exception _exception)
{
promoPackRequestBO.value = (com.ibm.idea.PromoPackTraderService.RequestResponseType) org.apache.axis.utils.JavaUtils
.convert(_output.get(new javax.xml.namespace.QName(
"http://idea.ibm.com/PromoPackTraderService", "PromoPackRequestBO")),
com.ibm.idea.PromoPackTraderService.RequestResponseType.class);
}
throw axisFaultException;
}
}
编辑-II
我的WSDL-
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="PromoPackTraderService" targetNamespace="http://idea.ibm.com/PromoPackTraderService" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://idea.ibm.com/PromoPackTraderService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema targetNamespace="http://idea.ibm.com/PromoPackTraderService" xmlns:mrm="http://idea.ibm.com/PromoPackTraderService">
<xsd:include schemaLocation="PromoPackRequestBO.xsd" />
</xsd:schema>
</wsdl:types>
<wsdl:message name="PromoPackRequest_in">
<wsdl:part element="tns:PromoPackRequestBO" name="PromoPackRequestBO" />
</wsdl:message>
<wsdl:message name="PromoPackRequest_out">
<wsdl:part element="tns:PromoPackRequestBO" name="PromoPackRequestBO" />
</wsdl:message>
<wsdl:portType name="PromoPackTraderServiceMsgPortType">
<wsdl:operation name="PromoPackRequest">
<wsdl:input message="tns:PromoPackRequest_in" name="PromoPackRequest_Input" />
<wsdl:output message="tns:PromoPackRequest_out" name="PromoPackRequest_Output" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="PromoPackTraderServiceMsgSOAP_HTTP_Binding" type="tns:PromoPackTraderServiceMsgPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="PromoPackRequest">
<soap:operation soapAction="" />
<wsdl:input name="PromoPackRequest_Input">
<soap:body parts="PromoPackRequestBO" use="literal" />
</wsdl:input>
<wsdl:output name="PromoPackRequest_Output">
<soap:body parts="PromoPackRequestBO" use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="PromoPackTraderServiceMsgSOAP_HTTP_Service">
<wsdl:port binding="tns:PromoPackTraderServiceMsgSOAP_HTTP_Binding" name="SOAP_HTTP_Port">
<soap:address location="http://localhost:7800/PromoPackTraderServiceMsgSOAP_HTTP_Service" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
相关XSD文件-
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="RequestResponseType">
<xsd:sequence>
<xsd:element name="messageHeader">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element name="headerInfo">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element name="CIRCLE_ID" type="xsd:string" />
<xsd:element name="CHANNEL_TYPE" type="xsd:string" />
<xsd:element name="TRACE_ID" type="xsd:string" />
<xsd:element name="LOB" type="xsd:string" />
<xsd:element name="OPERATION_NAME" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element minOccurs="0" name="errorInfo">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element name="ERRORCODE" type="xsd:string" />
<xsd:element name="ERRORMESSAGE" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element minOccurs="0" name="operationStatusCode">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="OPERATION_STATUS_CODE" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="messageBody">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element name="businessInputData">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element name="msisdnNumber" type="xsd:string" />
<xsd:element name="promoId" type="xsd:string" />
<xsd:element minOccurs="0" name="typeOfOperation" type="xsd:string" />
<xsd:element minOccurs="0" name="effectiveFromDate" type="xsd:string" />
<xsd:element minOccurs="0" name="productId" type="xsd:string" />
<xsd:element minOccurs="0" name="remarks" type="xsd:string" />
<xsd:element minOccurs="0" name="param1" type="xsd:string" />
<xsd:element minOccurs="0" name="param2" type="xsd:string" />
<xsd:element minOccurs="0" name="param3" type="xsd:string" />
</xsd:sequence>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element minOccurs="1" name="businessOutputData">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element minOccurs="0" name="srNo" type="xsd:string" />
<xsd:element minOccurs="0" name="param1" type="xsd:string" />
<xsd:element minOccurs="0" name="param2" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="PromoPackRequestBO" type="RequestResponseType">
</xsd:element>
<xsd:element name="RequestResponseType" type="RequestResponseType">
</xsd:element>
</xsd:schema>
听起来您想在代码中将namespaceAware设置为false:您可以发布您的客户端代码吗?相关部分。是的,您可以发布您的wsdl…让我们看看..发布相关的客户端代码和wsdl/XSD
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="PromoPackTraderService" targetNamespace="http://idea.ibm.com/PromoPackTraderService" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://idea.ibm.com/PromoPackTraderService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<wsdl:types>
<xsd:schema targetNamespace="http://idea.ibm.com/PromoPackTraderService" xmlns:mrm="http://idea.ibm.com/PromoPackTraderService">
<xsd:include schemaLocation="PromoPackRequestBO.xsd" />
</xsd:schema>
</wsdl:types>
<wsdl:message name="PromoPackRequest_in">
<wsdl:part element="tns:PromoPackRequestBO" name="PromoPackRequestBO" />
</wsdl:message>
<wsdl:message name="PromoPackRequest_out">
<wsdl:part element="tns:PromoPackRequestBO" name="PromoPackRequestBO" />
</wsdl:message>
<wsdl:portType name="PromoPackTraderServiceMsgPortType">
<wsdl:operation name="PromoPackRequest">
<wsdl:input message="tns:PromoPackRequest_in" name="PromoPackRequest_Input" />
<wsdl:output message="tns:PromoPackRequest_out" name="PromoPackRequest_Output" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="PromoPackTraderServiceMsgSOAP_HTTP_Binding" type="tns:PromoPackTraderServiceMsgPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="PromoPackRequest">
<soap:operation soapAction="" />
<wsdl:input name="PromoPackRequest_Input">
<soap:body parts="PromoPackRequestBO" use="literal" />
</wsdl:input>
<wsdl:output name="PromoPackRequest_Output">
<soap:body parts="PromoPackRequestBO" use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="PromoPackTraderServiceMsgSOAP_HTTP_Service">
<wsdl:port binding="tns:PromoPackTraderServiceMsgSOAP_HTTP_Binding" name="SOAP_HTTP_Port">
<soap:address location="http://localhost:7800/PromoPackTraderServiceMsgSOAP_HTTP_Service" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="RequestResponseType">
<xsd:sequence>
<xsd:element name="messageHeader">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element name="headerInfo">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element name="CIRCLE_ID" type="xsd:string" />
<xsd:element name="CHANNEL_TYPE" type="xsd:string" />
<xsd:element name="TRACE_ID" type="xsd:string" />
<xsd:element name="LOB" type="xsd:string" />
<xsd:element name="OPERATION_NAME" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element minOccurs="0" name="errorInfo">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element name="ERRORCODE" type="xsd:string" />
<xsd:element name="ERRORMESSAGE" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element minOccurs="0" name="operationStatusCode">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="OPERATION_STATUS_CODE" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="messageBody">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element name="businessInputData">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element name="msisdnNumber" type="xsd:string" />
<xsd:element name="promoId" type="xsd:string" />
<xsd:element minOccurs="0" name="typeOfOperation" type="xsd:string" />
<xsd:element minOccurs="0" name="effectiveFromDate" type="xsd:string" />
<xsd:element minOccurs="0" name="productId" type="xsd:string" />
<xsd:element minOccurs="0" name="remarks" type="xsd:string" />
<xsd:element minOccurs="0" name="param1" type="xsd:string" />
<xsd:element minOccurs="0" name="param2" type="xsd:string" />
<xsd:element minOccurs="0" name="param3" type="xsd:string" />
</xsd:sequence>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element minOccurs="1" name="businessOutputData">
<xsd:complexType>
<xsd:sequence maxOccurs="1" minOccurs="1">
<xsd:element minOccurs="0" name="srNo" type="xsd:string" />
<xsd:element minOccurs="0" name="param1" type="xsd:string" />
<xsd:element minOccurs="0" name="param2" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="PromoPackRequestBO" type="RequestResponseType">
</xsd:element>
<xsd:element name="RequestResponseType" type="RequestResponseType">
</xsd:element>
</xsd:schema>