如何将值传递给 java 中的 xsd:string RPC 编码的 SOAP xml 参数?
How to pass a value to xsd:string RPC encoded SOAP xml parameter in java?
这是在 SOAPUI 中显示的 WSDL 中使用的 XML。
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bran="BDetail">
<soapenv:Header/>
<soapenv:Body>
<bran:sentIbBTyp soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<pBnCode xsi:type="xsd:string">234</pBnCode>
</bran:sentIbBTyp>
</soapenv:Body>
</soapenv:Envelope>
我使用这个 java 代码来传递值
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
soapEnvelope.addNamespaceDeclaration("xsd",
"http://www.w3.org/2001/XMLSchema");
soapEnvelope.addNamespaceDeclaration("xsi",
"http://www.w3.org/2001/XMLSchema-instance");
soapEnvelope.addNamespaceDeclaration("bran", "BDetail");
SOAPBody soapBody = soapEnvelope.getBody();
SOAPElement soapElement = soapBody.addChildElement(
"sentIbBTyp", "bran");
soapElement
.setEncodingStyle("http://schemas.xmlsoap.org/soap/encoding/");
SOAPElement elementBankCode = soapElement.addChildElement("pBnCode");
elementBankCode.setValue("234");
我遇到了这个错误。请帮助我...
SOAP error No Deserializer found to deserialize a ':pBnCode' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'. [java.lang.IllegalArgumentException]
以下代码可能会有所帮助。检查其他 QName 构造函数并使用适当的构造函数。
将生成的 XML 与 SOAP 中的工作 UI 进行比较。
@Test
public void test() throws Exception {
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
soapEnvelope.addNamespaceDeclaration("xsd",
"http://www.w3.org/2001/XMLSchema");
soapEnvelope.addNamespaceDeclaration("xsi",
"http://www.w3.org/2001/XMLSchema-instance");
soapEnvelope.addNamespaceDeclaration("bran", "BDetail");
SOAPBody soapBody = soapEnvelope.getBody();
SOAPElement soapElement = soapBody.addChildElement(
"sentIbBTyp", "bran");
soapElement
.setEncodingStyle("http://schemas.xmlsoap.org/soap/encoding/");
SOAPElement elementBankCode = soapElement.addChildElement("pBnCode");
// added missing attribute
QName qname = new QName("xsi:type");
elementBankCode.addAttribute(qname, "xsd:string");
elementBankCode.setValue("234");
soapMessage.writeTo(System.out);
}
希望对您有所帮助。
这是在 SOAPUI 中显示的 WSDL 中使用的 XML。
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bran="BDetail">
<soapenv:Header/>
<soapenv:Body>
<bran:sentIbBTyp soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<pBnCode xsi:type="xsd:string">234</pBnCode>
</bran:sentIbBTyp>
</soapenv:Body>
</soapenv:Envelope>
我使用这个 java 代码来传递值
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
soapEnvelope.addNamespaceDeclaration("xsd",
"http://www.w3.org/2001/XMLSchema");
soapEnvelope.addNamespaceDeclaration("xsi",
"http://www.w3.org/2001/XMLSchema-instance");
soapEnvelope.addNamespaceDeclaration("bran", "BDetail");
SOAPBody soapBody = soapEnvelope.getBody();
SOAPElement soapElement = soapBody.addChildElement(
"sentIbBTyp", "bran");
soapElement
.setEncodingStyle("http://schemas.xmlsoap.org/soap/encoding/");
SOAPElement elementBankCode = soapElement.addChildElement("pBnCode");
elementBankCode.setValue("234");
我遇到了这个错误。请帮助我...
SOAP error No Deserializer found to deserialize a ':pBnCode' using encoding style 'http://schemas.xmlsoap.org/soap/encoding/'. [java.lang.IllegalArgumentException]
以下代码可能会有所帮助。检查其他 QName 构造函数并使用适当的构造函数。
将生成的 XML 与 SOAP 中的工作 UI 进行比较。
@Test
public void test() throws Exception {
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
soapEnvelope.addNamespaceDeclaration("xsd",
"http://www.w3.org/2001/XMLSchema");
soapEnvelope.addNamespaceDeclaration("xsi",
"http://www.w3.org/2001/XMLSchema-instance");
soapEnvelope.addNamespaceDeclaration("bran", "BDetail");
SOAPBody soapBody = soapEnvelope.getBody();
SOAPElement soapElement = soapBody.addChildElement(
"sentIbBTyp", "bran");
soapElement
.setEncodingStyle("http://schemas.xmlsoap.org/soap/encoding/");
SOAPElement elementBankCode = soapElement.addChildElement("pBnCode");
// added missing attribute
QName qname = new QName("xsi:type");
elementBankCode.addAttribute(qname, "xsd:string");
elementBankCode.setValue("234");
soapMessage.writeTo(System.out);
}
希望对您有所帮助。