簡體   English   中英

在axis / rampart客戶端中禁用InclusiveNamespaces

[英]Disable InclusiveNamespaces in axis/rampart client

我正在連接到具有axis / rampart的web服務,並被告知要刪除InclusiveNamespaces,因為prefixList是“”,這是不允許的。 我怎么做?

部分看起來像

<ds:SignedInfo>
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
        <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="wsa soapenv" />
    </ds:CanonicalizationMethod>
    <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
    <ds:Reference URI="#Id-289005241">
        <ds:Transforms>
            <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">              
                <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="" />
            </ds:Transform>
        </ds:Transforms>
        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />                          
        <ds:DigestValue>bla bla bla=</ds:DigestValue>
    </ds:Reference>
</ds:SignedInfo>

是否可以將軸/壘設置為在空的情況下不打印包含名稱空間?

我正在使用axis / rampart 1.6.2並連接到.NET服務

任何想法如何存檔? 或者我如何使它呈現非空前綴列表?

您必須添加自定義處理程序來過濾不需要的xml標記。

定制處理程序

    package com.perre;

        public class InclusiveNamespacesFilter extends AbstractHandler {

        public InvocationResponse invoke(MessageContext ctx) throws AxisFault {

            SOAPEnvelope msgEnvelope = ctx.getEnvelope();
            SOAPHeader msgHeader = msgEnvelope.getHeader();

            Iterator theDescendants = msgHeader.getDescendants(true);
            while(theDescendants.hasNext()){

                Object o = theDescendants.next();

                 //here, add your code to traverse DOM and get the node to filter 
                 //...
                 Node aNode = ele.getElementsByTagName("ec:InclusiveNamespacesFilter").item(0);
                 if(aNode != null){
                            ele.removeChild(aNode);
                 }
            }
            return InvocationResponse.CONTINUE;
        }

編輯你的axis2.xml並聲明處理程序:

 <phase name="PostSecurity">
      <handler name="FilterHandler" class="com.perre.InclusiveNamespacesFilter"/> 
 </phase>
  • 你應該准備好了。 在此處查找有關自定義處理程序的更多信

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM