/ / Usuń tag przestrzeni nazw w odpowiedzi usługi sieciowej za pomocą Spring-WS i Jaxb - java, web-services, soap, jaxb, spring-ws

Usuń znacznik przestrzeni nazw w odpowiedzi serwisu internetowego za pomocą Spring-WS i Jaxb - java, serwisy internetowe, mydło, jaxb, spring-ws

Używam punktu końcowego SOAP utworzonego na wiosnęFramework używający JAXB, ale chcę, aby moje anwersy (oczekiwana odpowiedź) powróciły bez prefiksu, gdy I Send Request One, ale to jest zwracane, jak pokazano na Current Response :.

Jak mogę zrobić, aby zwrócić wiadomość SOAP bez przestrzeni nazw?

Poproś o jeden

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"     xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
<soapenv:Header/>
<soapenv:Body>
<urn:ZProveerDatosPagoProveed2>
<Bukrs>RG10</Bukrs>
<Langu>S</Langu>
<Lifnr>00000000</Lifnr>
</urn:ZProveerDatosPagoProveed2>
</soapenv:Body>
</soapenv:Envelope>

Aktualna odpowiedź:

<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header/>
<soap-env:Body>
<n0:ZProveerDatosPagoProveed2Response xmlns:n0="urn:sap-com:document:sap:soap:functions:mc-style">
<Adrnr>0000</Adrnr>
<Bankk>0000</Bankk>
<Bankn>0000</Bankn>
<Bkont>0000</Bkont>
<Iban>ES0000</Iban>
<KoinhFi>ROBLES AVN</KoinhFi>
<Land1>TH</Land1>
<Landx>XXXXX</Landx>
<Name1>ROBLES AVN</Name1>
<Pstlz>0000</Pstlz>
<Stcd1>A0000</Stcd1>
<Stras>ROBLES AVN</Stras>
<Swift>XXXXX</Swift>
<Text1_052>ROBLES AVN</Text1_052>
<Zterm>Z000</Zterm>
</n0:ZProveerDatosPagoProveed2Response>
</soap-env:Body>
</soap-env:Envelope>

Żądaj jednej i bieżącej odpowiedzi, sążądanie / odpowiedź usługi internetowej osadzonej w innej usłudze internetowej (którą zaimplementowałem), powodem tej implementacji jest to, że zażądała ostatecznej odpowiedzi (bez znaczników przestrzeni nazw):

Oczekiwana odpowiedź

<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header/>
<soap-env:Body>
<ZProveerDatosPagoProveed2Response xmlns="urn:sap-com:document:sap:soap:functions:mc-style">
<Adrnr>0000</Adrnr>
<Bankk>0000</Bankk>
<Bankn>0000</Bankn>
<Bkont>0000</Bkont>
<Iban>ES0000</Iban>
<KoinhFi>ROBLES AVN</KoinhFi>
<Land1>TH</Land1>
<Landx>XXXXX</Landx>
<Name1>ROBLES AVN</Name1>
<Pstlz>0000</Pstlz>
<Stcd1>A0000</Stcd1>
<Stras>ROBLES AVN</Stras>
<Swift>XXXXX</Swift>
<Text1_052>ROBLES AVN</Text1_052>
<Zterm>Z000</Zterm>
</ZProveerDatosPagoProveed2Response>
</soap-env:Body>
</soap-env:Envelope>

Odpowiedzi:

0 dla odpowiedzi № 1

Mogłem to zrobić w następujący sposób:

  1. Dołącz dwa następujące słoiki JAXB : jaxb-core.jar i jaxb-impl.jar
  2. W pliku package-info.java ustaw następujące ustawienia:

Przypuśćmy, że twoja przestrzeń nazw to „twoja przestrzeń nazw"

@javax.xml.bind.annotation.XmlSchema(namespace = yournamespace,
xmlns = {@javax.xml.bind.annotation.XmlNs(prefix = "",
namespaceURI = yournamespace)},
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.UNSET)
package com.ctpayment.admin;

Wydaje się, że obecna implementacja Javaignoruj ​​poprzednie ustawienia, ale słoiki jaxb nie. Nie popchnąłem dalej mojego dochodzenia. Na koniec, potrzebujesz dwóch słoików, aby się skompilować.