Android使用ksoap2调用webservice
2017-08-07 14:43
337 查看
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调用C#中的webservice函数方法
- 在Android 中使用KSOAP2调用WebService
- 在Android 中使用KSOAP2调用WebService
- Android使用ksoap2调用C#中的webservice函数方法
- Android使用KSOAP2调用WebService及正确导入jar包的问题
- Android使用ksoap2调用C#中的webservice函数方法
- Android使用ksoap2调用C#中的webservice函数方法
- android使用ksoap2调用webservice接口实现电话号码查询功能
- Android使用KSOAP2调用WebService及正确导入jar包的问题
- Android使用ksoap2-android调用WebService学习
- 在Android 中使用KSOAP2调用WebService
- Android使用KSOAP2等第三方jar包调用WebService出现java.lang.NoClassDefFoundError.的解决办法
- 在Android 中使用KSOAP2调用WebService
- 在Android 中使用KSOAP2调用WebService
- Android使用KSOAP2调用WebService及正确导入jar包的问题
- Android使用ksoap2-android调用WebService学习
- 在Android 中使用KSOAP2调用WebService(二)
- Android使用ksoap2-android调用WebService学习
- Android使用ksoap2调用C#中的webservice实现图像上传
- 在Android 中使用KSOAP2调用WebService