android 远程调用.NET WCF服务
最近公司做了一个android客户端,我们的系统是用.NET开发的 当我们开发.NET以外的程序的时候 需要用web service才能跨平台的通信 我们这里用WCF服务,
下面我把代码内容记录下来,方便以后再开发Android时复习。
在调用微软WCF之前,在eclipse 中,需要下载这样一个ksoap2包,导入到eclipse中,先对调用WCF服务操作的步骤如下:
1、创建HttpTransportSE对象,该对象用于调用WCF服务操作,
2、创建SoapSerializationEnvelope对象,这个是HttpTransportSE调用WCF信息的载体,Client需要传入的参数,需要通过SoapSeralizationEnvelope对象属性bodyOut传给 Service,然后Service响应生成SOAP消息也通过该对象属性的bodyIn来获取信息
3、创建SoapObject对象,创建该对象时需要传入所要调用WCF的namespace(命名空间)和调用方法名
4、如果不需要穿参数,这个步骤可以忽略,这个步骤是给WCF方法传入参数的,用SoapObject对象的addProoperty(name,obj),该方法name代表参数名(这个参数名必须与WCF方法参数名一致),obj代表传参数值
5、用SoapSerializationEnvelope对象属性bodyOut接受SoapObject对象 这个对象就是所要发送的数据请求,这里是调用的是WCF 是属于.NET ,我们需要SoapSerializationEnvelope对象属性dotNet设置为true;
6、调用HttpTransportSE对象的call方法 把参数传进去,第一个参数是soapAction 只需要把namespace+方法名写上指定action ,第二个参数就是SoapSerializationEnvelope对象,这里面封装好了数据请求。
7、call过后,用SoapSerializationEnvelope对象属性bodyIn 返回的是一个SoapObject对象 该对象就是WCF返回的消息。解析这个对象就可以获取里面的值
下面是代码:
HttpTransportSE httpTransportSE=new HttpTransportSE(URL_STRING);//URL_STRING是WCF地址SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);//这里的版本是1.1的 SoapObject object=new SoapObject(NA_STRING, methodName); //object.addProperty('str','zhangsan');这里是参数envelope.bodyOut=object;envelope.dotNet=true;try {httpTransportSE.call("http://tempuri.org/IMobileSync/"+methodName, envelope);SoapObject result=(SoapObject)envelope.bodyIn;return result;} catch (Exception e) {// TODO: handle exceptionLog.d("webservice异常",e.getMessage());e.getStackTrace();}return null;
更多相关文章
- 快速上手Android数据库操作
- Android序列化Serializable和Parcelable的理解和区别
- 解析 ViewTreeObserver 源码,体会观察者模式、Android消息传递(下)
- Android(安卓)的启动流程-转
- Android横竖屏切换问题
- android横竖屏总结
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- 类和 Json对象
- Python技巧匿名函数、回调函数和高阶函数