Ksoap2使用详解

这几天要通过webservice来获取数据,于是想找一个开源的soap解析框架,由于android移动应用的特殊性——app的安装包不能过大,所以这样的

一个框架必须是一个轻量级框架,功能与接口简单,于是在网上找到了ksoap这样一个soap协议解析框架。

Ksoap是Enhydra.org组织的一个开源作品,他是基于Enhydra.org出品的开源通用XML解析器KXML上进行开发的,2002年推出了Ksoap1.2版本,

2003年推出了Ksoap2版本,Ksoap2提供了对soap序列化更好的支持。Ksoap2是一个轻量级的J2ME平台的实现框架,提供了soap协议消息的

组装,网络post,网络return,解析等功能。

Ksoap2 api :http://ksoap2.sourceforge.net/doc/api/  Ksoap2 官方网站:http://ksoap.objectweb.org

Ksoap2 包介绍


org.ksoap2这个包含了两个基础类,主要用于定义SOAP封装相关方面的东西。如:对SOAP版本的支持,NameSpace的定义方式。

org.ksoap2.serialization 这个包主要实现了SOAP的封装以及序列化相关方面的功能,如:协议加密等。

org.ksoap2.servlet 这个包主要实现了servlet访问相关功能。

org.ksoap2.transport 这个包实现了HTTP连接相关功能,如:数据的提交与返回。

Ksoap2 主要接口介绍

SoapEnvelope 

SoapObject

SoapSerializationEnvelope

HttpTransportSE

SoapEnvelope 中提供了不同SOAP版本的支持,封装了SOAP中的head,和body对象。

SoapObject 实现了KvmSerializable接口,被封装成soap 节点的消息体,或者消息体节点的子节点。取代了传统的类如果能够被当作节点类就必须实现

KvmSerializable接口这样一种情况。

SoapSerializationEnvelope 继承了SoapEnvelope类,实现了SOAP序列化功能。

HttpTransportSE 提供了访问、获取服务器SOAP数据的功能,它使用的是J2ME的连接框架来访问的。需要在子线程中进行操作,否则会引起主线程阻塞。

Ksoap2 访问webservice

	public static String loginInfo(String username,String psw){
		String method_name = "login";
		//String soapAtion = "http://ws.picc.speedtalk.com/login";
		if(username!=null && psw!=null){
			SoapObject object = new SoapObject(nameSpace, method_name);
			
			object.addProperty("id", username);
			object.addProperty("pwd", psw);
			
			//传入所支持的SOAP版本作为参数
			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
			envelope.bodyOut = object;//设置SOAP节点的消息体
			envelope.dotNet = false;
			envelope.implicitTypes = true;
			envelope.setOutputSoapObject(object);
			(new MarshalBase64()).register(envelope);
			HttpTransportSE se = new HttpTransportSE(Url);
			se.debug = true;//打开调试信息,这应该就是日志开关
			try {
				se.call(null, envelope);
				if(envelope.getResponse()!=null){
					SoapObject sObject = (SoapObject) envelope.bodyIn;				
					String isSucceed = sObject.getPropertyAsString(0).toString();
					return isSucceed;
				}
			} catch (HttpResponseException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} catch (XmlPullParserException e){
				e.printStackTrace();
			}
		}
		return null;
	}
	public static String nameSpace = "http://htws.picc.speedtalk.com";
	public static String Url = "http://192.168.1.231:8888/piccHT/services/piccHT.piccHTHttpSoap11Endpoint/";
其中nameSpace就是webservice 中的targetNamespace,Url即是webservice的wsdl文件中的soap:address 节点。上面soapAction表示的是

为Soap规范定义了一个HTTP的新标头,这个标头可以为空。故当调用call方法时,那个soapAction可以为空。

这样就完成了传入参数 username,password给webservice,然后获取返回结果,就能够通过webservice形式来验证账号和密码的正确性。

参考:http://www.cnblogs.com/tyler2000/archive/2011/06/09/ksoap2--webservice.html



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值