我是Web Services的新手,我正在编写一个可以与Web服务通信的Android应用程序。但是当我尝试在Android屏幕上显示结果时,它显示:
MethodNameResponse{MethodNameResult=anyType{};}
Web服务应该对服务器数据库进行简单查询并发布结果,这是调用Web服务的方法的代码:
public void Convert(String val) {
try {
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,METHOD_NAME);
PropertyInfo p = new PropertyInfo();
p.setName(PROPERTY_NAME);
p.setValue(val);
p.setType(String.class);
request.addProperty(p);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE ahs = new HttpTransportSE(SOAP_ADDRESS);
ahs.call(SOAP_ACTION, envelope);
SoapObject response = (SoapObject) envelope.bodyIn;
TextView.setText(response.toString());
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}
我的猜测是该服务有问题,或者我正在错误地解释数据。
答案 0 :(得分:1)
首先,用envelope.get response()
替换envelope.body您在SoapObject中的响应 - 所以不仅仅是您必须toString的东西。假设您知道服务的响应是什么样的,您将需要映射响应中的数据。 (例如,您的响应可能是一个复杂的XML结构,因此SoapObject响应将反映出来。)
这是一个使用SoapObject并映射响应的完整示例
http://seesharpgears.blogspot.co.uk/2010/10/ksoap-android-web-service-tutorial-with.html