【问题标题】:Remove namespace tag in web service response using Spring-WS and Jaxb使用 Spring-WS 和 Jaxb 删除 Web 服务响应中的命名空间标记
【发布时间】:2014-05-14 20:09:37
【问题描述】:

我正在使用在 Spring Framework 上使用 JAXB 创建的端点 SOAP,但我希望我的 anwers(Expected Response) 在我发送请求一时返回不带前缀,但这会像当前响应中显示的那样返回:。

如何在没有命名空间的情况下返回消息 SOAP?

请求一个

<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>

目前的回应:

<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>

请求一和当前响应,是嵌入在另一个 Web 服务(我实现的)中的 Web 服务的请求/响应,这个实现的原因是它要求最终的答案是这个(没有命名空间标签):

预期响应

<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>

【问题讨论】:

    标签: java web-services soap jaxb spring-ws


    【解决方案1】:

    我能够做到的方式如下:

    1. 包括来自JAXB 的以下两个 jar:jaxb-core.jar 和 jaxb-impl.jar
    2. 在 package-info.java 文件中,设置以下设置:

    假设您的命名空间是“yournamespace

    @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;
    

    似乎 java 的当前实现忽略了以前的设置,但 jaxb jars 没有。我没有进一步推动我的调查。最后但同样重要的是,您需要这两个 jar 才能进行编译。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多