基于Webservice实现天气信息获取及源码下载(二)

本项目说明如下: 1、分别使用三种方式获取服务信息。soap、http get、http post三种方式实现信息的获取。 2、基于android调用webservice服务详细步骤实现 博文链接上一篇地址: android-基于Webservice实现天气信息获取及源码下载(一) android-基于Webservice实现天气信息获取及源码下载(三) 本篇博文详细讲述开发过程。 首先看获取webservice信息的工具类代码:

{private static String TAG = “WebServiceUtil.class”;private CallBack callBack;private WeatherCallBack weatherCallBack;/*** 获取省份的方法* @return*/(){final String method = “getRegionProvince”;//该方法名不是随便写的,而是根据网站提供的接口规定的final HttpTransportSE httpTransportSE = new HttpTransportSE(Constants.URI);httpTransportSE.debug = true;final SoapSerializationEnvelope envelope =new SoapSerializationEnvelope(SoapEnvelope.VER11);//soap版本 这个基本随便 不一定使用ver11SoapObject soapObject = new SoapObject(Constants.URI_SERVER, method);//下面定义了三个参数,这三个也不是随便写的,而是根据接口规定的。soapObject.addProperty(“Content-Type”, “text/xml; charset=utf-8”);soapObject.addProperty(“SOAPAction”,Constants.URI_SERVER+method);soapObject.addProperty(“Content-Length”, soapObject.toString().length());envelope.bodyOut = soapObject;envelope.dotNet = true;Log.i(TAG, “执行task”);FutureTask<List<String>> task = new FutureTask<>(new Callable<List<String>>() {@Overridepublic List<String> call() throws Exception {httpTransportSE.call(Constants.URI_SERVER + method , envelope);if (envelope.getResponse() != null) {SoapObject result = (SoapObject) envelope.bodyIn;//method+”Result” 这个字符串也不是随便写的,而是根据接口返回值规定的SoapObject detail = (SoapObject) result.getProperty(method+”Result”);Log.i(TAG, detail.toString());//通过回调 返回数据callBack.getData((ArrayList<String>)parseProviceOrCity(detail));return parseProviceOrCity(detail);}return null;}});new Thread(task).start();//开启线程,执行任务try {task.get();//获取数据} catch (Exception e) {e.printStackTrace();Log.i(TAG, “出现异常”);}}(String theRegionCode){final String method = “getSupportCityString”;//该方法名不是随便写的,,而是根据网站提供的接口规定的final HttpTransportSE httpTransportSE = new HttpTransportSE(Constants.URI);httpTransportSE.debug = true;final SoapSerializationEnvelope envelope =new SoapSerializationEnvelope(SoapEnvelope.VER11);SoapObject soapObject = new SoapObject(Constants.URI_SERVER, method);//下面定义了四个参数,这四个也不是随便写的,而是根据接口规定的。soapObject.addProperty(“Content-Type”, “text/xml; charset=utf-8”);soapObject.addProperty(“SOAPAction”,Constants.URI_SERVER+method);soapObject.addProperty(“theRegionCode”, theRegionCode);soapObject.addProperty(“Content-Length”, soapObject.toString().length());envelope.bodyOut = soapObject;envelope.dotNet = true;FutureTask<List<String>> task = new FutureTask<>(new Callable<List<String>>() {@Overridepublic List<String> call() throws Exception {httpTransportSE.call(Constants.URI_SERVER + method , envelope);if (envelope.getResponse() != null) {SoapObject result = (SoapObject) envelope.bodyIn;//method+”Result” 这个字符串也不是随便写的,而是根据接口返回值规定的SoapObject detail = (SoapObject) result.getProperty(method+”Result”);Log.i(TAG, detail.toString());//通过回调 返回数据callBack.getData((ArrayList<String>)parseProviceOrCity(detail));return parseProviceOrCity(detail);}return null;}});new Thread(task).start();try {task.get();} catch (Exception e) {e.printStackTrace();Log.i(TAG, “出现异常”);}}(String theCityCode){final String method = “getWeather”;//该方法名不是随便写的,而是根据网站提供的接口规定的final HttpTransportSE httpTransportSE = new HttpTransportSE(Constants.URI);httpTransportSE.debug = true;final SoapSerializationEnvelope envelope =new SoapSerializationEnvelope(SoapEnvelope.VER11);SoapObject soapObject = new SoapObject(Constants.URI_SERVER, method);//下面定义了五个参数,这五个也不是随便写的,而是根据接口规定的。soapObject.addProperty(“Content-Type”, “text/xml; charset=utf-8”);soapObject.addProperty(“SOAPAction”,Constants.URI_SERVER+method);soapObject.addProperty(“theCityCode”, theCityCode);soapObject.addProperty(“theUserID”, Constants.theUserID);soapObject.addProperty(“Content-Length”, soapObject.toString().length());envelope.bodyOut = soapObject;envelope.dotNet = true;FutureTask<List<String>> task = new FutureTask<>(new Callable<List<String>>() {@Overridepublic List<String> call() throws Exception {httpTransportSE.call(Constants.URI_SERVER + method , envelope);if (envelope.getResponse() != null) {SoapObject result = (SoapObject) envelope.bodyIn;//method+”Result” 这个字符串也不是随便写的,而是根据接口返回值规定的SoapObject detail = (SoapObject) result.getProperty(method+”Result”);Log.i(TAG, detail.toString());//通过回调 返回数据weatherCallBack.getData(detail.toString());return parseProviceOrCity(detail);}return null;}});new Thread(task).start();try {task.get();} catch (Exception e) {e.printStackTrace();Log.i(TAG, “出现异常”);}}//解析获取省份或者城市的数据的方法 解析非常简单private List<String> parseProviceOrCity(SoapObject soapObject){ArrayList<String> arrayList = new ArrayList<>();for (int i = 0; i < soapObject.getPropertyCount(); i++) {arrayList.add(soapObject.getProperty(i).toString().split(“,”)[0]);}return arrayList;}(CallBack callBack){this.callBack = callBack;getProviceList();}(CallBack callBack,String theRegionCode){this.callBack = callBack;GetCityList(theRegionCode);}(WeatherCallBack weatherCallBack,String theRedionCode){this.weatherCallBack = weatherCallBack;GetWeather(theRedionCode);}{(ArrayList<String> arrayList);}{(String weather);}}鱼儿爱美,不仅需要鳞甲之美。还需要浮沉活泼之美。

基于Webservice实现天气信息获取及源码下载(二)

相关文章:

你感兴趣的文章:

标签云: