小弟目前在做一个网关,遇到一个问题,请高人指点!!
我填写的SOAP头为这样
SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(
"http://www.netcom.com/spec/2006/01/01/netcom-parlayx-wssecurity.xsd",
"NetcomSecurityHeader");
SOAPElement element = soapHeaderElement.addChildElement("SPToken");
element.addChildElement("SPID").addTextNode("1040000003");
element.addChildElement("password").addTextNode("12345678");
soapHeaderElement.addChildElement("ServiceID").addTextNode("90120111121040000000008");
soapHeaderElement.addChildElement("TransactionID").addTextNode("02010511302300000040");
soapHeaderElement.addChildElement("OA").addTextNode("00863518277990");
soapHeaderElement.addChildElement("FA").addTextNode("00863518277990");
我想在发包后再加一个HEADER
SOAPHeaderElement rootSoapElement = new SOAPHeaderElement(
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
"Security");
发包后的格式为:
<soapenv:Header>
<ns1:Security soapenv:mustUnderstand="0" xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<ns2:NetcomSecurityHeader soapenv:mustUnderstand="0" xmlns:ns2="http://www.netcom.com/spec/2006/01/01/netcom-parlayx-wssecurity.xsd">
<ns2:SPToken>
<ns2:SPID>2030006782</ns2:SPID>
<ns2:password>12345678</ns2:password>
</ns2:SPToken>
<ns2:ServiceID>90120111122030000037605</ns2:ServiceID>
<ns2:OA>008645189635660</ns2:OA>
<ns2:FA>008645189635660</ns2:FA>
</ns2:NetcomSecurityHeader>
</ns1:Security>
</soapenv:Header>
有做网关方面的高手请教教小弟,我的QQ是350528980,EMAIL是[email protected]

解决方案 »

  1.   

    我想在发包后再加一个HEADER 那顺序就错了。
      

  2.   

    我一开始也将SOAPHeaderElement rootSoapElement = new SOAPHeaderElement( 
    "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", 
    "Security"); 写在最前面,可是我怎么加也加不到最外面。
      

  3.   

    我一加就加到<ns2:NetcomSecurityHeader soapenv:mustUnderstand="0" xmlns:ns2="http://www.netcom.com/spec/2006/01/01/netcom-parlayx-wssecurity.xsd"> 这个标签里面了!
      

  4.   

    试一试
    PrefixedQName securiyQN = new PrefixedQName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
      "Security","ns1");
      PrefixedQName NSHeaderQN = new PrefixedQName("http://www.netcom.com/spec/2006/01/01/netcom-parlayx-wssecurity.xsd",
      "NetcomSecurityHeader","ns2");
      SOAPHeaderElement rootHeaderElement = new SOAPHeaderElement(securiyQN);
      SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(NSHeaderQN); 
      rootHeaderElement.addChildElement(soapHeaderElement);
      SOAPElement element = soapHeaderElement.addChildElement("SPToken"); 
      element.addChildElement("SPID").addTextNode("1040000003"); 
      element.addChildElement("password").addTextNode("12345678"); 
      soapHeaderElement.addChildElement("ServiceID").addTextNode("90120111121040000000008"); 
      soapHeaderElement.addChildElement("TransactionID").addTextNode("02010511302300000040"); 
      soapHeaderElement.addChildElement("OA").addTextNode("00863518277990"); 
      soapHeaderElement.addChildElement("FA").addTextNode("00863518277990"); 
      

  5.   


    还不对啊,我抓的包是这!
    <soapenv:Header>
    <ns2:NetcomSecurityHeader soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:ns2="http://www.netcom.com/spec/2006/01/01/netcom-parlayx-wssecurity.xsd">
    <ns2:SPToken>
    <ns2:SPID>1040000003</ns2:SPID>
    <ns2:password>12345678</ns2:password>
    </ns2:SPToken>
    <ns2:ServiceID>90120111121040000000008</ns2:ServiceID>
    <ns2:TransactionID>02010511302300000040</ns2:TransactionID>
    <ns2:OA>00863518277990</ns2:OA>
    <ns2:FA>00863518277990</ns2:FA>
    </ns2:NetcomSecurityHeader>
    </soapenv:Header>
      

  6.   


          PrefixedQName securiyQN = new PrefixedQName("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
                  "Security","ns1");
          PrefixedQName NSHeaderQN = new PrefixedQName("http://www.netcom.com/spec/2006/01/01/netcom-parlayx-wssecurity.xsd",
                  "NetcomSecurityHeader","ns2");
          SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(securiyQN).addChildElement(NSHeaderQN); 
          SOAPElement element = soapHeaderElement.addChildElement("SPToken"); 
          element.addChildElement("SPID").addTextNode("1040000003"); 
          element.addChildElement("password").addTextNode("12345678"); 
          soapHeaderElement.addChildElement("ServiceID").addTextNode("90120111121040000000008"); 
          soapHeaderElement.addChildElement("TransactionID").addTextNode("02010511302300000040"); 
          soapHeaderElement.addChildElement("OA").addTextNode("00863518277990"); 
          soapHeaderElement.addChildElement("FA").addTextNode("00863518277990"); 
    这再不行,我就没办法了。我这里没有编译环境,调试不了。
      

  7.   

    SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(securiyQN).addChildElement(NSHeaderQN); 
    这句话语法就错误吧!
    addChildElement(NSHeaderQN);返回的是SOAPElement