Android开发使用Web Service获取数据

在安卓开发中,经常使用ksoap2-android调用WebService获取服务器端数据。操作步骤如下:

1.创建HttpTransportSE对象,该对象用于调用Web Service操作。

2.创建SoapSerializationEnvelope对象,该对象代表一个SOAP消息封包。

3.创建SoapObject对象,创建该对象时需要传入所要调用的Web Service的命名空间、Web Service方法名。

4.如果有参数需要传给Web Service服务器端,调用SoapObject对象的addProperty(String name, Object value)方法来设置参数,该方法的name参数指定参数名,value参数指定参数值

5.调用SoapSerializationEnvelope的setOutputSoapObject()方法,或者直接对bodyOut属性赋值,将前两步所创建的SoapObject对象设为SoapSerializationEnvolope的传出SOAP消息体

6.调用对象的call()方法,并以SoapSerializationEnvelope作为参数调用远程Web Service。

7.调用完成后,访问SoapSerializationEnvelope对象的bodyIn属性,该属性返回一个SoapObject对象,该对象就代表了Web Service的返回信息。解析该SoapObject对象,即可获取调用的Web Service的返回值。

示例代码:

// 调用的方法
String methodName = "getUserInfo";
// 创建HttpTransportSE传输对象
final HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);  //
ht.debug = true;
// 使用SOAP1.1协议创建Envelop对象
final SoapSerializationEnvelope envelope = new 
	SoapSerializationEnvelope(SoapEnvelope.VER11);  //
// 实例化SoapObject对象
SoapObject soapObject = new SoapObject(SERVICE_NS, methodName); //
soapObject.addProperty("arg0", "客户端参数:");  //
// 将soapObject对象设置为 SoapSerializationEnvelope对象的传出SOAP消息
envelope.bodyOut = soapObject;  //
new Thread()
{
	public void run()
	{
		try
		{
			// 调用Web Service
			ht.call(null,  envelope);  //⑥
			if (envelope.getResponse() != null)
			{
				// 获取服务器响应返回的SOAP消息
				SoapObject result = (SoapObject) envelope.bodyIn; //⑦
				// 接下来就是从SoapObject对象中解析响应数据的过程了。
				SoapObject detail1 = (SoapObject) result
					.getProperty(0);
				SoapObject detail2 = (SoapObject) result
					.getProperty(1);
				StringBuilder person1 = new StringBuilder();
				person1.append("用户名:");
				person1.append(detail1.getProperty(3));
				person1.append("\n密码");
				person1.append(detail1.getProperty(0));
				person1.append("\n身高:");
				person1.append(detail1.getProperty(1));
				Message msg = new Message();
				msg.what = 0x123;
				msg.obj = person1.toString();
				handler.sendMessage(msg);
			}
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		catch (XmlPullParserException e)
		{
			e.printStackTrace();
		}
	}
}.start();





你可能感兴趣的:(java,android)