基于SOAP与服务器进行数据交互

这篇博客记录了作者在Android项目中如何利用SOAP协议与.NET服务器进行数据交互的过程,详细介绍了所需的ksoap库及其实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日,在做一个android项目的时候,有用到和.net服务器进行数据交互的功能,但是自己不太会做,所以就问了一些同事,然后参见了些网上的基于SOAP与数据库进行数据交互的例子,然后就写出了下面的代码:

public static int getTaskCount(int orgId, int state) {
	String str = null;
	int taskCount = 0;

	// 实例化SoapObject对象,Common.SERVICE_NAMESPACE = "http://tempuri.org/" :命名空间
	// Common.TASK_COUNT_METHOD_NAME是方法名
	SoapObject request = new SoapObject(Common.SERVICE_NAMESPACE,
			Common.TASK_COUNT_METHOD_NAME);

	// 传入SoapObject对象中的参数,如果没有参数的话也可以不要
	request.addProperty("orgid", orgId);
	request.addProperty("state", state);

	// 设置SOAP请求信息,把构造好的soapObject封装进去,设置好属性后,再发出请求
	// (参数部分为SOAP协议版本号,与webservice版本号一致)
	/*
	* 常量SoapEnvelope.VER10:对应于SOAP1.0规范 常量SoapEnvelope.VER11:对应于SOAP1.1规范
	* 常量SoapEnvelope.VER12:对应于SOAP1.2规范
	*/
	SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
			SoapEnvelope.VER11);
	envelope.bodyOut = request;
	envelope.dotNet = true;
	envelope.setOutputSoapObject(request);

	/*
	* 在kSOAP中,我们用Base64把二进制流编码为ASCII字符串, 这样就可以通过XML/SOAP传输二进制数据了。
	* org.ksoap2.serialization.MarshalBase64的目的就是, 把SOAP
	* XML中的xsd:based64Binary元素序列化为Java字节数组(byete array)类型。
	* 类似的,kSOAP2还提供了MarshalDate、MarshalHashtable类
	* 来把相应的元素序列化为Java的Date、Hashtable类型。 (该步可省 据需要决定) (new
	* MarshalBase64()).register(envelope);
	*/
	// 注册envelope
	(new MarshalBase64()).register(envelope);

	// 构建传输对象,开启调试信息
	//Common.SERVICE_URL = "http://222.188.91.150:8010/APP_WebServices/FMOA_WebService.asmx?wsdl"
	AndroidHttpTransport transport = new AndroidHttpTransport(
			Common.SERVICE_URL);
	transport.debug = true;

	try {
		// 调用WebService(其中参数为1:命名空间+方法名称,2:Envelope对象)
		transport.call(Common.SERVICE_NAMESPACE
				+ Common.TASK_COUNT_METHOD_NAME, envelope);

		// 取得返回数据
		if (envelope.getResponse() != null) {
			str = ((SoapObject) envelope.bodyIn).getProperty(0).toString();
		}

		if (str != null && !"".equals(str)) {
			taskCount = Integer.parseInt(str);
		}
	} catch (Exception e) {
		e.printStackTrace();
	}

	return taskCount;
}


当然在编写这些代码之前需要引入一个jar文件:ksoap的jar包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值