2017-06-14 4 views
2

Am nouveau à ce service toujours Web SOAP est mon ksoap lib dépendance,Comment faire pour analyser SOAP dans Android?

repositories { 
    maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' } 
} 
dependencies { 
    compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1' 
} 

S'il vous plaît regarder à ma demande SOAP et la réponse

POST /loyaltywebservice/LoyaltyWebService.asmx HTTP/1.1 
Host: host url is here 
Content-Type: text/xml; charset=utf-8 
Content-Length: length 
SOAPAction: "http://tempuri.org/AttemptLogin" 

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
    <UserCredential xmlns="http://tempuri.org/"> 
     <userName>string</userName> 
     <password>string</password> 
    </UserCredential> 
    </soap:Header> 
    <soap:Body> 
    <AttemptLogin xmlns="http://tempuri.org/"> 
     <LoyalCustCode>string</LoyalCustCode> 
     <PwdStr>string</PwdStr> 
    </AttemptLogin> 
    </soap:Body> 
</soap:Envelope> 

Et tandis que am parsing am devient l'authentification du service Web échec .Mais ce qui fonctionne dans "POSTMAN" .Le code suivant j'ai essayé, et le nom d'utilisateur et mot de passe que je viens de changer parce que je ne peux pas ouvrir le credential.So j'ai juste ajouté 1234.Avez un coup d'oeil sur mon code.At s'il vous plaît aider moi où je fais une erreur.

public void soapLogin() { 
    try { 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       try { 

        //Prepare the header with the authentication data. 
        Element headers = new Element().createElement(UrlActivity.NAMESPACE, "UserCredential"); 

        Element username = new Element().createElement(UrlActivity.NAMESPACE, "userName"); 
        username.addChild(Node.TEXT, "test"); 
        headers.addChild(Node.ELEMENT, username); 

        Element pass = new Element().createElement(UrlActivity.NAMESPACE, "password"); 
        pass.addChild(Node.TEXT, "1234"); 
        headers.addChild(Node.ELEMENT, pass); 

        // Soap Request 
        final SoapObject request = new SoapObject(UrlActivity.NAMESPACE, UrlActivity.METHOD_NAME); 
        request.addProperty("LoyalCustCode","12345"); 
        request.addProperty("PwdStr","12345"); 

        final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
        // add header to envelope 
        envelope.headerOut = new Element[1]; 
        envelope.headerOut[0] = headers; 
        envelope.setOutputSoapObject(request); 

        //Add the header to the envelope. 
        final HttpTransportSE androidHttpTransport = new HttpTransportSE(UrlActivity.URL); 
        androidHttpTransport.debug = true; 
        androidHttpTransport.call(UrlActivity.SOAP_ACTION, envelope); 
        Log.d("Login", "Request:- "+androidHttpTransport.requestDump); 

        final SoapPrimitive result = (SoapPrimitive)envelope.getResponse(); 
        Log.d("Login", "Response:- "+androidHttpTransport.responseDump); 
        // final SoapObject result = (SoapObject) envelope.getResponse(); 
        String response = result.toString(); 
        Log.d("Login", "Response:- "+response); 
       }catch (Exception ex){ 
        Log.e("Login", "soapLogin:- "+ex.getMessage()); 
       } 
      } 
     }).start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

Quel genre d'erreur? Partagez votre journal d'erreur – Ninja

+0

soapcliente I/Resultado :: Fonction AttemptLogin Erreur: -2147467261 –

+0

S'il vous plaît poster votre journal parce que dans une ligne lo g pas facile d'avoir une idée exacte de l'emplacement du problème (Androin ou PHP)? – Ninja

Répondre

2
final SoapObject request = new SoapObject(UrlActivity.NAMESPACE, UrlActivity.METHOD_NAME); 
         // TODO the two params are child soap objects not properties 
         SoapObject loyal = new SoapObject(UrlActivity.NAMESPACE, "LoyalCustCode"); 
         loyal.setInnerText("1234"); 
         request.addSoapObject(loyal); 

         loyal = new SoapObject(UrlActivity.NAMESPACE, "PwdStr"); 
         loyal.setInnerText("1234"); 
         request.addSoapObject(loyal); 
//Params are different than child node 
+0

Excellent travail ... A travaillé ... –

1

Tout d'abord, vous devez ajouter ces derniers dans votre build.gradle

repositories { 
    maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' } 
} 
dependencies { 
    compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1' 
} 

Ensuite, utilisez le code ci-dessous pour Get API response-

  SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
      SoapObject loyal = new SoapObject(NAMESPACE, "LoyalCustCode"); 
      loyal.setInnerText("custcode"); 
      request.addSoapObject(loyal); 

      loyal = new SoapObject(NAMESPACE, "PwdStr"); 
      loyal.setInnerText("pass"); 
      request.addSoapObject(loyal); 

      Element headers = new Element().createElement(NAMESPACE, "UserCredential"); 

      Element username = new Element().createElement(NAMESPACE, "userName"); 
      username.addChild(Node.TEXT, "test"); 
      headers.addChild(Node.ELEMENT, username); 

      Element pass = new Element().createElement(NAMESPACE, "password"); 
      pass.addChild(Node.TEXT, "1234"); 
      headers.addChild(Node.ELEMENT, pass); 

      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.headerOut = new Element[1]; 
      envelope.headerOut[0] = headers; 
      envelope.setOutputSoapObject(request); 

      HttpTransportSE ht = new HttpTransportSE(URL); 
      try { 
       ht.call(SOAP_ACTION, envelope); 
       SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); 
       resultado = response.toString(); 
       Log.i("Resultado: ", resultado); 
      } catch (Exception e) { 
       Log.i("Error: ", e.getMessage()); 
       e.printStackTrace(); 
       return false; 
      }