私は消費する必要のあるSOAPエンドポイントを持っています。 Javaコードの生成は、maven plugin-wsimportで行います。問題は、エンドポイントがそれ以外の有効な要求で不良データを返すことです。いくつかのタグにのみJAXB名前空間
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:upd="http://www.vivacom.bg/UpdateBAInvoiceInfo/">
<soapenv:Header/>
<soapenv:Body>
<upd:UpdBAInvoiceInfoRequest>
<BillingAccountCode>10122190001</BillingAccountCode>
<SSOGUID>1234567</SSOGUID>
<RequestedInvoiceType>E</RequestedInvoiceType>
<eMail1>[email protected]</eMail1>
<InputRequestID>SSS</InputRequestID>
<InputTimeStamp>20170202131615154</InputTimeStamp>
</upd:UpdBAInvoiceInfoRequest>
</soapenv:Body>
</soapenv:Envelope>
ここ
「UPD」接頭辞がトップレベルで定義されています。ここに渡す要求の例があります。しかし、JAXBはこの要求を生成します。
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<S:Body>
<UpdBAInvoiceInfoRequest
xmlns="http://www.vivacom.bg/UpdateBAInvoiceInfo/">
<BillingAccountCode>10122190001</BillingAccountCode>
<SSOGUID>1234567</SSOGUID>
<RequestedInvoiceType>E</RequestedInvoiceType>
<eMail1>[email protected]</eMail1>
<InputRequestID>NMS2081417920</InputRequestID>
<InputTimeStamp>20170202131615154</InputTimeStamp>
</UpdBAInvoiceInfoRequest>
</S:Body>
</S:Envelope>
「UPD」修飾子は不足しているとのxmlnsは、タグに埋め込まれています。 XMLNSプレフィックスを手動でpackage-info.javaを変更し、追加した後の要素が定義されていないため、生成された要求は再び「BadData」内のすべての要素、その結果を「UPD」接頭辞を追加
@javax.xml.bind.annotation.XmlSchema(namespace =
"http://www.vivacom.bg/UpdateBAInvoiceInfo/",
elementFormDefault = XmlNsForm.QUALIFIED,
attributeFormDefault = XmlNsForm.UNSET,
xmlns = {
@XmlNs(prefix="upd",
namespaceURI="http://www.vivacom.bg/UpdateBAInvoiceInfo/")
})
その型には埋め込まれています。
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<S:Body>
<upd:UpdBAInvoiceInfoRequest
xmlns:as="http://www.vivacom.bg/UpdateBAInvoiceInfo/">
<upd:BillingAccountCode>10122190001</upd:BillingAccountCode>
<upd:SSOGUID>1234567</upd:SSOGUID>
<upd:RequestedInvoiceType>E</upd:RequestedInvoiceType>
<upd:eMail1>[email protected]</upd:eMail1>
<upd:InputRequestID>NMS2513334601</upd:InputRequestID>
<upd:InputTimeStamp>20170202131615154</upd:InputTimeStamp>
</upd:UpdBAInvoiceInfoRequest>
</S:Body>
</S:Envelope>
BillingAccountCodeの前に "upd"を追加する必要がありますが、その属性の前には追加しないでください。