2010-08-25 181 views
2

我正在嘗試使用kso​​ap2庫連接到SOAP Web服務。我已經閱讀了一堆關於它的文檔,但由於我的請求不是普通的,我被卡住了。android上的SOAP web服務

我需要在發送請求之前指定一些標頭。

時是使用SOAP客戶端來測試Web服務我也需要把這個肥皂enveope頭部分:

<SOAP-ENV:Header> 
<mns:AuthIn xmlns:mns="http://enablon/wsdl/" 
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
<UserInfo xsi:type="wsdlns:AuthHeader"> 
    <EnaHomeSite xsi:type="xsd:string">sss</EnaHomeSite> 
    <EnaUserName xsi:type="xsd:string">sadsa</EnaUserName> 
    <EnaPassword xsi:type="xsd:string">qwertf</EnaPassword> 
</UserInfo> 
</mns:AuthIn> 
</SOAP-ENV:Header> 

我的代碼的其餘部分與this方法

模擬器需要一點時間來進動,所以我認爲它與服務器聯繫,但電話到...叫crases有:

org.xmlpull.v1.XmlPullParserException: expected: END_TAG {http://schemas.xmlsoap.org/soap/envelope/}Body (position:END_TAG </{http://schemas.xmlsoap.org/soap/envelope/}SOAP-ENV:Fault>@1:505 in [email protected]) 

我的問題是我如何重視上面提到的標題符合我的要求?

我沒有設法爲ksoap罰款漂亮的文檔。也許一些教程或例子。任何人都可以指點我一些文檔。我找到了javadoc,但它非常薄。

我也嘗試格式化我自己的原始HTTP請求。 (設法在iPhone上這樣做,它工作得很好)。不過,我似乎無法添加請求的主體。我的意思是包含所有標題名稱空間和所需的數據調用的大肥皂xml。任何指向這個方向的指針也將非常感激。

非常感謝,夥計們。

乾杯, 亞歷

回答

3

我也遇到過同樣的問題,爲此,我已在以下方式創建頭,


public static Element[] addheader() 
    { 
      Element[] header = new Element[1]; 
      header[0] = new Element().createElement("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd","Security"); 
      header[0].setAttribute(null, "mustUnderstand","1"); 
      Element usernametoken = new Element().createElement("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "UsernameToken"); 
      // usernametoken.addChild(Node.TEXT,""); 
      usernametoken.setAttribute("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd", "Id", "UsernameToken-4"); 
      header[0].addChild(Node.ELEMENT,usernametoken); 
      Element username = new Element().createElement(null, "n0:Username"); 
      username.addChild(Node.TEXT, "username_value"); 
      //username.setPrefix("n0", null); 
      usernametoken.addChild(Node.ELEMENT, username); 
      Element pass = new Element().createElement(null, "n0:Password"); 
      //pass.setPrefix("n0",null); 
      pass.setAttribute(null, "Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"); 
      pass.addChild(Node.TEXT, "password_value"); 

      usernametoken.addChild(Node.ELEMENT, pass); 
      return header; 
    } 

,並添加此頭爲soapEnvelope.headerOut = addheader();

因爲它爲我工作,如果應該爲你工作。

+0

仍然我無法get.Same錯誤我越來越 – Raj008 2014-03-21 19:16:52