Android kSOAP2错误
我正在尝试将手机的用户名和设备ID提交到我的服务器,但不断出现以下错误: W/System.err﹕ SoapFault-faultcode:'soap:Client'faultstring:'解组错误:意外元素(uri:,本地:“用户名”)。预期的元素为'faultactor:'null'详细信息:null 这是我的代码: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);
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请求。但我不知道我到底要改变什么,你能不能给我提供请求转储的截图,在我的答案中有一些改变,你不会明确提到的地方