2010-08-25 10 views
2

Je suis en train de me connecter à un service web SOAP en utilisant la librairie ksoap2. J'ai lu un tas de documents à ce sujet, mais je suis coincé que ma demande n'est pas ordinaire.Service web SOAP sur android

Je dois spécifier certains en-têtes avant d'envoyer la requête.

quand est utiliser un client de savon pour tester le webservice j'ai besoin aussi de mettre cela dans la section d'en-tête de enveope soap:

<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> 

Le reste de mon code est similaire à this approche

L'émulateur prend un peu de temps pour précession je suppose qu'il contacte le serveur, mais l'appel à ... appeler crases avec:

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]) 

Ma question est de savoir comment puis-je attacher l'en-tête mentionné ci-dessus à ma demande?

Je n'ai pas réussi à bien doc pour ksoap. peut-être quelques tutoriels ou exemples. quelqu'un peut-il me diriger vers des documents? J'ai trouvé le javadoc, mais il est plutôt mince.

J'ai également essayé de formater ma propre requête HTTP brute. (réussi à le faire sur iPhone et ça marche très bien). Cependant je ne peux pas sembler pouvoir ajouter le corps de la demande dedans. Je veux dire le grand savon xml contenant tous les espaces de noms d'en-têtes et les données requises pour l'appel. Tout pointeur sur cette direction serait également très apprécié.

Merci beaucoup, les gars.

Cheers, Alex

Répondre

3

que j'ai rencontré même problème et que je l'ai créé en-tête de la manière suivante,


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; 
    } 

et ajouter cet en-tête comme soapEnvelope.headerOut = addheader();

Comme cela fonctionne pour moi, si cela devrait fonctionner pour vous.

+0

Je n'arrive toujours pas à obtenir.Même erreur que je reçois – Raj008