Saya menggunakan layanan web vendor. Menghasilkan kelas menggunakan wsimport JDK6 untuk vendor WSDL. Sekarang saya mencoba memanggil layanan web menggunakan kelas klien Java sederhana dan mendapatkan pengecualian ini dengan respons.
Tag XML tak terduga. diharapkan: {http://www.abcd.com/addressValidation/}validateAddressResponse tetapi ditemukan: {} validasiAddressResponse
Vendor mengatakan coba dengan kelas yang dihasilkan Apache Axis, itu berfungsi dengan baik. Apa yang saya perhatikan adalah JaxWS secara otomatis menambahkan/mengikat namespace ke setiap elemen dalam permintaan dan juga mengharapkan namespace di elemen respons.
Antarmuka yang dihasilkan adalah
@WebService(name = "AddressStandardize", targetNamespace = "http://www.abcd.com/addressValidation/")
@XmlSeeAlso({
com.abcd.ObjectFactory.class
})
public interface AddressStandardize {
@WebMethod(action = "http://www.abcd.com/standardizeAddress")
@RequestWrapper(localName = "validateAddress", targetNamespace = "", className = "com.abcd.ValidateAddress")
@ResponseWrapper(localName = "validateAddressResponse", targetNamespace = "", className = "com.abcd.ValidateAddressResponse")
public void standardizeAddress(
...
...
...
);
}
Saya kira Jax-WS menambahkan namespace target ini ke elemen validasiAddress dan validasiAddressResponse.
Cara menghindari pengikatan namespace target ke elemen validasiAddressResponse sehingga tidak mengharapkan respons balik. Mohon bantuannya!
Permintaan yang dibuat Jax WS:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
<ns2:id xmlns:ns2="http://www.abcd.com/addressValidation/">PSA</ns2:id>
</S:Header>
<S:Body>
<ns2:validateAddress xmlns:ns2="http://www.abcd.com/addressValidation/">
<arg1>
<addresslineone>126 corbin st</addresslineone>
<addresslinetwo/>
<addresslinethree/>
<city>jersey city</city>
<state>NJ</state>
<postalcode/>
<country/>
<isocountrycode>US</isocountrycode>
</arg1>
</ns2:validateAddress>
</S:Body>
</S:Envelope>
Respon Pengembalian:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xyz="http://www.abcd.com/xyz">
<soapenv:Header xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xyz:id>PSA</xyz:id>
</soapenv:Header>
<soapenv:Body xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<validateAddressResponse xsi:noNamespaceSchemaLocation="addressValidation.xsd">
<validateAddressReturn>
...
...
...
</validateAddressReturn>
<ResponseStatus>
<StatusCode>SUCCESS</StatusCode>
</ResponseStatus>
</validateAddressResponse>
</soapenv:Body>
</soapenv:Envelope>
Tanggapan ini datang dengan pengecualian ini... tag XML yang tidak terduga. diharapkan: {http://www.abcd.com/addressValidation/}validateAddressResponse tetapi ditemukan: {} validasiAlamatResponse