如何在Android中进行SOAP解析?

如何在Android中进行SOAP解析?,android,android-ksoap2,Android,Android Ksoap2,我是这个SOAP web服务的新手。这是我的ksoap库依赖性 repositories { maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' } } dependencies { compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1' } 请关注我的SOAP请求和响应 POST /loy

我是这个SOAP web服务的新手。这是我的ksoap库依赖性

 repositories {
    maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' }
}
dependencies {
    compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1'
}
请关注我的SOAP请求和响应

 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>

首先,您需要在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'
}
然后使用下面的代码获取API响应-

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

什么样的错误?分享你的错误日志SoapCliente I/Resultado::Function AttemptLogin error:-2147467261请发布你的日志,因为在一行日志中不容易准确知道问题出在哪里(Androin或PHP)?忍者只收到了这个错误,什么都没有收到,为什么我感到困惑
repositories {
    maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' }
}
dependencies {
    compile 'com.google.code.ksoap2-android:ksoap2-android:3.6.1'
}
            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;
            }