关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 安卓开发 »Android中使用Android Ksoap2调用WebService

    Android中使用Android Ksoap2调用WebService

    2015-05-11 00:00:00 出处:easydone
    分享

    一、WebService介绍

    WebService是基于SOAP协议可实现web服务器与web服务器之间的通信,因采用SOAP协议传送XML数据具有平台无关性,也是成为解决异构平台之间通信的重要解决方案,比如Java平台与.net平台之间。因此在web应用中有着举足轻重的作用,很多机构、组织都在各自平台上对外发布了WebService(例如:天气预报、航班信息、股市行情等等),这样任何平台和客户都可以享受到这些服务,当然有些是要付费的。

    二、Android ksoap2组件

    对于Android端调用WebService,有两种方式,一种自己编写代码主要通过URL获得 HttpUrlConnection的方式建立与webservice的连接,然后进行I/O读写传送和获得数据,并对获得数据进行XML解析,比较麻烦。另一种就是使用第三方组件,比较常用的就是ksoap2-android。

    ksoap2-android这个开源组件针对Android平台提供了一个轻量级和高效的SOAP类库,可方便实现Android端与WebService之间的通信

    1、环境搭建

    ksoap2-android项目的地址:http://code.google.com/p/ksoap2-android/ 大家可以下载最新版本jar,然后将jar加入到项目中即可。

    我这里使用是ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar

    2、Ksoap2 使用的主要步骤

    1)web服务参数准备

    // webservice服务地址
    
    String url= “http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx”;
    
    //web服务的命名空间
    
    String namespace=” http://WebXml.com.cn/”;
    
    //请求服务的方法名称
    
    String methodName=”getMobileCodeInfo”;
    
    //soap请求地址
    
    String soapActionAddress = "http://WebXml.com.cn/getMobileCodeInfo";

    2)创建HttpTransportSE,该组件可发送请求

    HttpTransportSE transport = new HttpTransportSE(url);

    3)创建SoapObject,添加要传送的数据(信息载体)

    SoapObject soapObject = new SoapObject(namespace,methodName);
    
    soapObject.addProperty(name,value);//添加数据
    
    …

    4)创建SoapSerializationEnvelope对象,指定xml版本,以及request中body

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    
    envelope.bodyOut = soapObject;
    
    envelope.setOutputSoapObject(soapObject);

    5)发送请求,调用webserivce中的方法

    httpTransportSE.call(soapActionAddress, envelope);//服务传回的信息,会放在envelope的bodyIn属性中

    6) 获取服务传回的数据

    SoapObject object = (SoapObject) envelope.bodyIn;

    三、实现案例——通过调用webservice查询手机号码的归属地

    执行效果如下:

    在Android中使用Android Ksoap2调用WebService

    完整代码实现:

    public class MainActivity extends Activity {
        ///手机归属地Webservice的参数信息
        private static final String nameSpaceAddress = "http://WebXml.com.cn/";
    private static final String urlAddress
     = "http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx";
        private static final String methodNameAddress = "getMobileCodeInfo";
        private static final String soapActionAddress = "http://WebXml.com.cn/getMobileCodeInfo";
        private TextView telAddress = null;
        private EditText tel = null;
        private Button btnAddress = null;
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            btnAddress = (Button) this.findViewById(R.id.btnSearchAddress);
            telAddress = (TextView) this.findViewById(R.id.telAddress);
            tel = (EditText) this.findViewById(R.id.telNo);
            btnAddress.setOnClickListener(new Button.OnClickListener() {
                @Override
                public void onClick(View v) {
                    new Thread(new Runnable() {
                        public void run() {
                            getTelAddress();
                        }
                    }).start();
    
                }
            });
    /**
    * 请求WebService并获得返回的手机号码归属地信息
    */
    public void getTelAddress() {
            SoapObject soapObject = new 
    SoapObject(nameSpaceAddress, methodNameAddress);//创建SOAP对象
            //设置属性,这些属性值通过SOAP协议传送给服务器
            soapObject.addProperty("mobileCode", tel.getText().toString());//要查询的电话号码
            soapObject.addProperty("userId", "");        
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                    SoapEnvelope.VER11);
            envelope.bodyOut = soapObject;
            envelope.dotNet = true;        
            envelope.setOutputSoapObject(soapObject);
            HttpTransportSE httpTransportSE = new HttpTransportSE(urlAddress);
            try {
                //调用服务
                httpTransportSE.call(soapActionAddress, envelope);
            } catch (Exception e) {
                e.printStackTrace();
            }
            //获取服务传回的数据,手机归属地信息
            SoapObject object = (SoapObject) envelope.bodyIn;
            txtAddress = object.getProperty(0).toString();
            //向主线程发送消息成功,getTelAddress函数执行完毕
            handlerAddress.sendEmptyMessage(0);
    
        }
        Handler handlerAddress = new Handler() {
            public void handleMessage(Message msg) {
                telAddress.setText(txtAddress);
                Toast.makeText(MainActivity.this, 
    "获取号码归属地成功"+txtAddress, Toast.LENGTH_LONG).show();
            }
        };
    }

    四、附:常见的WebService服务URL

    手机归属地服务

    http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx

    天气预报Web服务,数据来源于中国气象局

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

    IP地址来:

    http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx

    中文 <-> 英文双向翻译 WEB 服务:

    http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx

    火车时刻表

    http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx

    航班查询服务

    http://webservice.webxml.com.cn/webservices/DomesticAirline.asmx

    中国股票行情数据 WEB 服务

    http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx

    中国电视节目预告

    http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    如何删除自带的不常用应用为windows 7减负

    MySQL中多表删除方法

    改进的二值图像像素标记算法及程序实现

    windows 7 32位系统下手动修改磁盘属性例如M盘修改为F盘

    windows 7中怎么样在家庭组互传文件

    Linux应用集成MySQL数据库访问技巧

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。