Android kSOAP2错误

Android kSOAP2错误,android,web-services,wsdl,ksoap2,Android,Web Services,Wsdl,Ksoap2,我正在尝试将手机的用户名和设备ID提交到我的服务器,但不断出现以下错误: W/System.err﹕ SoapFault-faultcode:'soap:Client'faultstring:'解组错误:意外元素(uri:,本地:“用户名”)。预期的元素为'faultactor:'null'详细信息:null 这是我的代码: PropertyInfo pi = new PropertyInfo(); pi.setNamespace(NAMESPACE);

我正在尝试将手机的用户名和设备ID提交到我的服务器,但不断出现以下错误:

W/System.err﹕ SoapFault-faultcode:'soap:Client'faultstring:'解组错误:意外元素(uri:,本地:“用户名”)。预期的元素为'faultactor:'null'详细信息:null

这是我的代码:

       PropertyInfo pi = new PropertyInfo();
       pi.setNamespace(NAMESPACE);
       pi.setName("username");
       pi.setValue(userName.getText().toString());
       pi.setType(PropertyInfo.STRING_CLASS);
       request.addProperty(pi); 
       pi.setNamespace(NAMESPACE);
       pi.setName("deviceID");

       pi.setValue(android.provider.Settings.Secure.getString(
       getContentResolver(), 
       android.provider.Settings.Secure.ANDROID_ID));
       pi.setType(PropertyInfo.STRING_CLASS);
       request.addProperty(pi);

        SoapSerializationEnvelope envelope = 
         new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.dotNet = true;
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
这是wsdl文件:

 <xs:complexType name="addUser">
   <xs:sequence>
    <xs:element minOccurs="0" name="username" type="xs:string"/>
    <xs:element minOccurs="0" name="deviceID" type="xs:string"/>
   </xs:sequence>
  </xs:complexType>

有人能帮我吗? 我找了两个小时,什么也没找到

编辑2: http请求转储的左上角 右角是SoapUI生成的有效请求

在添加第一个属性后,应记住将属性声明为新属性

pi=新属性info()

还有一件事,记得给你的androidHttpTransport打电话

androidHttpTransport.call(SOAP_ACTION,envelope,null);
SoapPrimitive respond = (SoapPrimitive) envelope.getResponse();
更新: 您的请求传递的参数是否与您希望传递的参数完全相同?调试时,您可以看到webservice名称以及传入的值名称和参数

ConnectionString{username=manager;password=password123;}


在添加第一个属性后,应记住将其声明为新属性

pi=新属性info()

还有一件事,记得给你的androidHttpTransport打电话

androidHttpTransport.call(SOAP_ACTION,envelope,null);
SoapPrimitive respond = (SoapPrimitive) envelope.getResponse();
更新: 您的请求传递的参数是否与您希望传递的参数完全相同?调试时,您可以看到webservice名称以及传入的值名称和参数

ConnectionString{username=manager;password=password123;}


您是否尝试过使用下面的
addProperty

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("username", username);
request.addProperty("deviceID", deviceID);

此外,您可以确保您有一个有效的值,并且在访问
userName.getText().toString()

时没有点击任何
NPE
,您是否尝试过使用下面的
addProperty
添加属性

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("username", username);
request.addProperty("deviceID", deviceID);



另外,您可以确保您有一个有效的值,并且在访问
userName.getText().toString()

时没有点击任何
NPE
,有什么原因我不能在我的问题中添加问候语吗?:使用
String.class
而不是
PropertyInfo.String\u class
尝试过这一点。也不起作用。有什么原因我不能在我的问题中添加问候语吗?:使用
String.class
而不是
PropertyInfo.String\u class
尝试过这样做。也不起作用。有什么原因我不能在我的问题中添加问候语吗?:使用
String.class
而不是
PropertyInfo.String\u class
尝试过这样做。也没用。是的,对不起,我打电话给androidHttpTransport。这是发生错误的那一行。我试过你的代码。遗憾的是,它不起作用。您传入的参数如何?我看到您的错误提到预期的元素设备ID位于用户名之前。现在它更改为:SoapFault-faultcode:'soap:Client'faultstring:'解组错误:意外元素(uri:,local:'deviceID')。预期的元素是'faultactor:'null'详细信息:nullHad您调试并检查参数是否成功传递到您的请求中?是。调试告诉我一切正常,直到调用androidHttpTransport。是的,对不起,我确实调用了androidHttpTransport。这是发生错误的那一行。我试过你的代码。遗憾的是,它不起作用。您传入的参数如何?我看到您的错误提到预期的元素设备ID位于用户名之前。现在它更改为:SoapFault-faultcode:'soap:Client'faultstring:'解组错误:意外元素(uri:,local:'deviceID')。预期的元素是'faultactor:'null'详细信息:nullHad您调试并检查参数是否成功传递到您的请求中?是。调试告诉我一切正常,直到调用androidHttpTransport。是的,对不起,我确实调用了androidHttpTransport。这是发生错误的那一行。我试过你的代码。遗憾的是,它不起作用。您传入的参数如何?我看到您的错误提到预期的元素设备ID位于用户名之前。现在它更改为:SoapFault-faultcode:'soap:Client'faultstring:'解组错误:意外元素(uri:,local:'deviceID')。预期的元素是'faultactor:'null'详细信息:nullHad您调试并检查参数是否成功传递到您的请求中?是。调试告诉我一切都很好,直到androidHttpTransportyip的电话。我也试过了。没有更改。您是否尝试过使用SoapUI进行
请求/响应
,并确认您的
web服务
wsdl
没有问题?为了更好地调试,请在进行传输调用之前尝试设置
androidHttpTransport.debug=true
。您应该能够看到
请求
响应
转储。查看您的请求是否符合您在
SoapUI
中看到的内容(或者您已经有了清晰的图片),左上角是请求转储,左下角是SoapUI请求。但我不知道我到底需要更改什么,请您提供请求转储的屏幕截图,并在我的回答中进行更改,您不会明确提到属性的名称空间或类型YIP。我也试过了。没有更改。您是否尝试过使用SoapUI进行
请求/响应
,并确认您的
web服务
wsdl
没有问题?为了更好地调试,请在进行传输调用之前尝试设置
androidHttpTransport.debug=true
。您应该能够看到
请求
响应
转储。查看您的请求是否符合您在
SoapUI
中看到的内容(或者您已经有了清晰的图片),左上角是请求转储,左下角是SoapUI请求。但我不知道我到底要改变什么,你能不能给我提供请求转储的截图,在我的答案中有一些改变,你不会明确提到的地方