1.android调用webservice接口需要使用第三方jar包ksoap2,KSoap2 Android 是Android平台上一个高效、轻量级的SOAP开发包。

2.Ksoap2-android jar包下载
ksoap2 android当前的最新版本为2.5.4,名为ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar,它的下载地址是:http://code.google.com/p/ksoap2-android/,进入页面后,点击“Downloads”标签页,点击里面的链接下载。

3.下载后,将ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar放在项目的libs目录下,build path后就可以使用了。

4.具体调用

// 调用websevice接口,返回结果String nameSpace = "xxx";//命名空间,形式如:http://WebXml.com.cn/// 调用的方法名称String methodName = "xxxx";//形式如:getMobileCodeInfo// EndPointString endPoint = "xxxxxx";//形式如:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx// SOAP ActionString soapAction = "xxxxxxxxxx";//形式如:http://WebXml.com.cn/getMobileCodeInfo// 指定WebService的命名空间和调用的方法名SoapObject rpc = new SoapObject(nameSpace, methodName);// 设置需调用WebService接口需要传入的两个参数mobileCode、userIdrpc.addProperty("params", "xxxx");// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);envelope.bodyOut = rpc;// 设置是否调用的是dotNet开发的WebServiceenvelope.dotNet = true;// 等价于envelope.bodyOut = rpc;envelope.setOutputSoapObject(rpc);HttpTransportSE transport = new HttpTransportSE(endPoint);try {// 调用WebServicetransport.call(soapAction, envelope);// 获取返回的数据if (envelope.bodyIn != null) {SoapObject object = (SoapObject) envelope.bodyIn;if (object.getPropertyCount() > 0) {jsonResult = object.getProperty(0).toString();}}} catch (Exception e) {e.printStackTrace();jsonResult="";}

5.解释

当在浏览器中访问WSDL时,很容易得知命名空间、调用的方法名称是什么,至于EndPoint通常是将WSDL地址末尾的"?wsdl"去除后剩余的部分;而SOAP Action通常为命名空间 + 调用的方法名称。

6.补充一下,详细代码

/* * 基本功能:调用webservice,返回json字符串 */public static String getWebserviceResult(String methodName,Map<String, String> map) {String nameSpace = Constants.NAMESPACE;String endPoint = Constants.ENDPOINT;String soapAction = nameSpace + methodName;// 指定WebService的命名空间和调用的方法名SoapObject rpc = new SoapObject(nameSpace, methodName);@SuppressWarnings("rawtypes")Iterator iter = map.entrySet().iterator();while (iter.hasNext()) {@SuppressWarnings("rawtypes")Map.Entry entry = (Map.Entry) iter.next();String key = (String) entry.getKey();String val = (String) entry.getValue();// 设置需调用WebService接口需要传入参数rpc.addProperty(key, val);}// 生成调用WebService方法的SOAP请求信息,并指定SOAP的版本SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);envelope.bodyOut = rpc;// 设置是否调用的是dotNet开发的WebServiceenvelope.dotNet = true;// 等价于envelope.bodyOut = rpc;envelope.setOutputSoapObject(rpc);String jsonResult = "";HttpTransportSE transport = new HttpTransportSE(endPoint, 3000);// 设置超时try {// 调用WebServicetransport.call(soapAction, envelope);// 获取返回的数据if (envelope.bodyIn != null) {SoapObject object = (SoapObject) envelope.bodyIn;if (object.getPropertyCount() > 0) {jsonResult = object.getProperty(0).toString();}}} catch (Exception e) { e.printStackTrace();jsonResult="";}return jsonResult;}


更多相关文章

  1. Android(安卓)- SharedPreferences 数据存储
  2. Android常用工具库
  3. Android(安卓)YUV视频数据叠加时间信息
  4. Ubuntu编译Android(安卓)KitKat 4.4出现Chromium gyp HashSet_jn
  5. android退出activity
  6. Android(安卓)获取系统prop
  7. Android(安卓)Fragment和Activity之间通过接口互传数据通信
  8. Android(安卓)源码分析-打电话和发短信
  9. Android的ViewFlipper与GestureDetector

随机推荐

  1. 26、Android之Handler异步消息处理机制
  2. Android横竖屏幕切换生命周期详解
  3. Android简单自定义标题栏
  4. Android:链接到你的产品(Linking to Your
  5. Android(安卓)的常用控件(下拉,日期,时间,单
  6. android 读取网络 xml 数据
  7. Android积木之LayoutParams使用
  8. android学习日常3-15 关于单选框附加监听
  9. Android(安卓)访问权限许可大全
  10. pull解析xml(android)