博文参考:
http://www.cnblogs.com/shenliang123/archive/2012/07/05/2578586.html
http://blog.csdn.net/jimbo_lee/article/details/23612333
http://www.cnblogs.com/zhangchaoyang/articles/1955834.html
注意:
1、需要加网络权限
2、跟一般的联网操作一样需要在子线程中。
3、两个主要参数: webservice的命名空间和要调用的方法名
引入jar包后,按以下步骤走就可以了。
(1)创建HttpTransportSE对象,该对象用于调用WebService操作
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
(2)创建SoapSerializationEnvelope对象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
(3)创建SoapObject对象,创建该对象时需要传入所要调用的Web Service的命名空间和WebService方法名
SoapObject request = new SoapObject(SERVICE_NS, methodName);
(4)如果有参数传给Web Service服务器端,调用SoapObject对象的addProperty(String name, Object value)方法来设置参数,该方法的name参数指定参数名
注意:参数名不一定要与服务端的方法中的参数名相同,只要对应顺序相同即可;value参数指定参数值
request.addProperty("name", "1006010054");
(5)调用SoapSerializationEnvelope的setOutputSoapObject()方法,或者直接对bodyOut属性赋值,将前两步创建的SoapObject对象设为SoapSerializationEnvelope
的传出SOAP消息体
envelope.bodyOut = request;
(6)调用对象的call()方法,并以SoapSerializationEnvelope作为参数调用远程的web service
ht.call(null, envelope);
(7)掉用完成后,访问SoapSerializationEnvelope对象的bodyIn属性,该属性返回一个SoapObject对象,该对象就代表Web service的返回消息,解析该对象,即可获得
调用web service的返回值
SoapObject result = (SoapObject) envelope.bodyIn;
String name = result.getProperty(0).toString();