2012-08-24 84 views
0

這是一個標題,我想生成...問題:產生不正確頭

<soap:Header> 
     <wsse:Security soap:mustUnderstand="true" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
     <wsse:UsernameToken wsu:Id="UsernameToken-2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> 
      <wsse:Username>----------</wsse:Username> 
      <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">----------</wsse:Password> 
      <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">Hozef94FFwOhuiF5QixaMQ==</wsse:Nonce> 
      <wsu:Created>2012-08-21T13:26:03.642Z</wsu:Created> 
     </wsse:UsernameToken> 
     </wsse:Security> 
    </soap:Header> 

這是我目前產生頭...

<wsse:Username xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">MedTrak_Dev</wsse:Username> 
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">---------</wsse:Password> 
<wsse:Nonce xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">WEb3nSNkVO29y0Mt91yYNA==</wsse:Nonce> 
<wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2012-08-24T13:45:14Z</wsu:Created> 

其實,我不知道標題是什麼?我怎麼弄出來的?

我這樣做下面這個堆棧​​溢出的答案給出的教程... WSE service Client answer

我認爲問題出的代碼從答案

public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel) 
     { 
      // Use the WSE 3.0 security token class 
      UsernameToken token = new UsernameToken(this.Username, this.Password, PasswordOption.SendPlainText); 

      Nonce nonce = new Nonce(10); 

      // Serialize the token to XML 
      XmlElement securityToken = token.GetXml(new XmlDocument()); 

      // 
      MessageHeader securityHeader = MessageHeader.CreateHeader("Security", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken", securityToken, false); 
      request.Headers.Add(securityHeader); 

      // complete 
      return Convert.DBNull; 
     } 

這個特定部分中我修改了一點所以我以純文本發送密碼,並且擺脫了未實現的異常拋出。我怎樣才能確保我得到正確的標題?

security.wssecurity.WSSContextImpl.s02: com.ibm.websphere.security.WSSecurityException: Exception org.apache.axis2.AxisFault: CWWSS5525E: The server cannot find the security header for a Web service with no actor. ocurred while running action: [email protected]f5 

UPDATE:生成相對靠近頭

除,則投擲整個請求進入的SOAP請求的頭部與不分割它分成主體和它不產生一個隨機數或創建日期...所以我想這些將是我接下來的任務......

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"> 
    <s:Header> 
     <VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo9VZylDHg5JMgjsNnWLhATkAAAAA+YtOxHdh0Uqd4a64raX/nIzYz20mPHlBv4Wk5S8d5PsACQAA</VsDebuggerCausalityData> 
     <wsse:Security s:mustUnderstand="0" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
      <UsernameToken xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
       <Username>------------</Username> 
       <Password>************</Password> 
      </UsernameToken> 
     </wsse:Security> 
     <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
      <GetOrganizations xmlns="http://esdm.upmc.com/bpm/medtrak/businessobjects/messaging/"> 
       <personId xmlns="">0</personId> 
       <typeId xmlns=""> 
        <int>1</int> 
        <int>2</int> 
        <int>3</int> 
        <int>4</int> 
       </typeId> 
      </GetOrganizations> 
     </s:Body> 
    </s:Header> 
</s:Envelope> 

我的操作順序必須關閉或東西。

回答