Android使用ksoap2调用webservice
来源:互联网 发布:淘宝店铺全套免费模板 编辑:程序博客网 时间:2024/05/16 17:33
1.使用免费的webservice接口
这里我们使用的是http://ws.webxml.com.cn/WebServices/WeatherWS.asmx这个接口作测试,如下图所示
这里列出了许多方法,我们这里选用getRegionProvince这个方法。它可以获得中国的所有省份信息。
这里我们点击getRegionProvince进去看一看
这个页面便是这个方法的详细描述,我们点击一下“调用”按钮,就可以测试一下这个接口,我这里就不截图了,它会返回一个XML文档,列出省份的信息。
2.下载ksoap2
我使用的是Android Studio这款软件开发,但是我没找到如何直接用Gradle下载这个库,所以就直接下载jar包好啦^_^
http://simpligility.github.io/ksoap2-android/getting-started.html
在这里下载最新的jar包就可以了,然后把它放到这里,注意蓝色框框的地方要选择project哦
在app下的 build.gradle 中加上这一句,然后重新构建gradle就可以啦~
compile files('libs/ksoap2-android-assembly-3.6.2-jar-with-dependencies.jar')
3.使用ksoap2调用webserivce
大致分为以下几步
1. 设置参数
这里我们需要设置4个参数,分别是SOAP_ACTION、NAMESPACE、METHOD_NAME和URL,让我们再来看一下webservice的页面。
图片中标明了这几个参数,还有一个URL参数,就是WSDL文件的地址了
http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL
WSDL文件就是描述这个web服务的XML文件
我这里在界面中放了一个按钮,在Click事件中请求这个webservice。
下面是定义这几个参数的代码:
private static String SOAP_ACTION="http://WebXml.com.cn/getRegionProvince";private static String NAMESPACE="http://WebXml.com.cn/";private static String METHOD_NAME="getRegionProvince";private static String URL="http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL";
2.从webservice上获取数据
我们写一个函数getInformation() 用来获取从webservice上返回的数据。
private SoapObject getInformation(){ SoapObject request=new SoapObject(NAMESPACE,METHOD_NAME); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); try{ HttpTransportSE transportSE=new HttpTransportSE(URL); transportSE.call(SOAP_ACTION,envelope); SoapObject result=(SoapObject)envelope.bodyIn; //获取到返回的结果,并强制转换成SoapObject对象 SoapObject test = (SoapObject)result.getProperty(0); //该对象中还嵌套了一个SoapObject对象,需要使用getProperty(0)把这个对象提取出来 return test; }catch (Exception e){ e.printStackTrace(); } return null; }
3.从主线程上显示数据
由于这是一个网络请求,必须在子线程上进行,我们这里使用AsyncTask类。
class DownloadTask extends AsyncTask<Void,Integer,Boolean>{ @Override protected Boolean doInBackground(Void... voids) { result = getInformation(); //在子线程中请求webservice return null; } @Override protected void onPostExecute(Boolean aBoolean) { StringBuilder builder = new StringBuilder(); //解析返回的数据 for(int i=0;i<result.getPropertyCount();i++){ builder.append(result.getProperty(i)); } Toast.makeText(MainActivity.this, builder.toString(), Toast.LENGTH_SHORT).show(); } }
最后在按钮点击事件中执行这个AsyncTask就可以啦!
new DownloadTask().execute();
看一下最后的效果吧^_^
点击“请求WEBSERVICE接口”,就可以显示数据啦!
4.小结
这个算是最最简单的功能了,但是有了这个做基础,想做基于webservice的复杂Android应用也不在话下啦!学习新的技术,都要从一个最简单的DEMO开始,就像Hello World!一样,有了它作为敲门砖,后面的路就越来越轻松了= ̄ω ̄=
- Android使用ksoap2 调用 WebService
- Android使用ksoap2调用webservice
- Android使用ksoap2-android调用WebService学习
- Android使用ksoap2-android调用WebService学习
- Android使用ksoap2-android调用WebService学习
- Android使用ksoap2-android调用WebService学习
- Android使用ksoap2-android调用WebService学习
- 4.Android使用ksoap2-android调用WebService
- android ksoap2调用webservice
- 使用KSOAP2调用WebService
- Android模拟器使用KSOAP2调用WebService
- Android使用ksoap2调用C#webservice
- 在Android 中使用KSOAP2调用WebService
- 在Android 中使用KSOAP2调用WebService
- 在Android 中使用KSOAP2调用WebService
- 在Android 中使用KSOAP2调用WebService
- 在Android 中使用KSOAP2调用WebService
- 在Android 中使用KSOAP2调用WebService
- 用jspf文件做jsp页面的通用页面头
- 文章标题
- 笔记本电脑键盘帽坏掉了
- 开机LOGO更换
- 13.8-全栈Java笔记:打飞机游戏实战项目|Explode|MyGameFrame|Plane
- Android使用ksoap2调用webservice
- 关于获取普通Object对象的length
- Yukari's Birthday(UVALive
- ubuntu16.04 安装sublime-text3 汉化并中文支持
- 冒泡排序和快速排序
- Spring mvc 深入原理
- android随时随地退出程序和知晓当前是在哪一个活动
- Android零基础入门第27节:正确使用padding和margin
- 延时跳转