最近公司做了一个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;

  

更多相关文章

  1. 【android】GridView几个比较实用的属性以及需要注意的问题
  2. edittext的imeOptions属性和android软键盘的使用
  3. android:ellipsize属性
  4. Android中TextView和EditView常用属性设置
  5. 关于设置android:imeOptions属性无效的解决办法

随机推荐

  1. Android学习感悟之Activity
  2. 如何使用Android最新的RecyclerView取代L
  3. Android Studio打包生成Jar包的方法
  4. Android(安卓)触摸屏手势识别
  5. Android对图片局部扩大的实现
  6. android md5加密
  7. 关于android上dpi/screen-size的厘清解释
  8. Android异步加载图片
  9. Android 命令行手动编译打包详解
  10. Android 不通过parent实现样式继承