2013-06-19 7 views
0

В Android-программировании я пытаюсь создать следующий заголовок мыла (WSSE Security с заголовком паролей) с помощью ksoap2.WSSE Security Headers с Digest (SOAP) в Android с помощью ksoap2

<soap:Header> 
    <wsse:Security soap:mustUnderstand="1"> 
     <wsse:UsernameToken> 
     <wsse:Username>user</wsse:Username> 
     <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">DbIekaN2kkkEHsC2dHVrWYj0Lj0=</wsse:Password> 
     <wsse:Nonce>KCkqLywtiK8wMTIzND9N2e==</wsse:Nonce> 
     <wsu:Created>2013-06-18T21:18:11Z</wsu:Created> 
    </wsse:UsernameToken> 
    </wsse:Security> 
    </soap:Header> 

Мой код для генерации выше заголовка является

Element headers[] = new Element[1]; 
    headers[0]= new Element().createElement("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "Security"); 
    headers[0].setAttribute(null, "soap:mustUnderstand", "1"); 

    Element to = new Element().createElement("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "UsernameToken"); 


    Element action1 = new Element().createElement(null, "n0:Username"); 
    action1.addChild(Node.TEXT, "user"); 
    to.addChild(Node.ELEMENT,action1); 

    Element action2 = new Element().createElement(null, "n0:Password"); 
    action2.setAttribute(null, "Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest"); 
    action2.addChild(Node.TEXT, "DbIekaN2kkkEHsC2dHVrWYj0Lj0="); 
    to.addChild(Node.ELEMENT,action2); 


    Element action3 = new Element().createElement(null, "n0:Nonce"); 
    action3.addChild(Node.TEXT, "KCkqLywtiK8wMTIzND9N2e=="); 
    to.addChild(Node.ELEMENT,action3); 

    Element action4 = new Element().createElement(null, "wsu:Created"); 
    action4.addChild(Node.TEXT, "2013-06-18T13:18:11Z"); 
    to.addChild(Node.ELEMENT,action4); 


    headers[0].addChild(Node.ELEMENT, to); 

    soapEnvelope.headerOut = headers[0]; 
    // soapEnvelop is created using the following code 
    // SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

Однако приведенный выше код дает HTTP 400 (Bad Request).

Может ли кто-нибудь мне помочь?

ответ

2

ли вы пытаетесь иметь взгляд на requestdump, сделав httpTransport.debug = истинный

Я думаю, что WSU не связано с собственным пространством имен. Вместо того, чтобы писать это, Элемент action4 = new Element(). CreateElement (null, "wsu: Created");

, пожалуйста, попробуйте элемент action4 = новый элемент(). CreateElement ("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "Created");

+0

Я пробовал, как вы уже упоминали (прежде чем смотреть на этот ответ), и это работало как шарм. Спасибо за ответ, хотя :) –