android 获取天气预报
来源:互联网 发布:12306软件手机版 编辑:程序博客网 时间:2024/06/02 13:24
开发环境android4.0.3
网上有很多android获取天气预报的方法,但是由于android版本更新,在主线程在禁止访问网络权限,因此需要创建一个新的线程连接WebService。
android的WebService 应用soap简单对象协议,这里采用ksoap2-android-assembly-2.5.4-jar-with-dependencies.jar开发包。
连接WebService主要接口如下:
public static SoapObject common(String methodName, HashMap<String, Object>map,String nameSpace, String endPoint){String soapAction = nameSpace + methodName; //指定WebService的命名空间和调用的方法名SoapObject rpc = new SoapObject(nameSpace,methodName ); //设置调用WebService就接口需要传入的参数if (null != map && map.size() > 0){Iterator<Entry<String, Object>> iter = map.entrySet().iterator(); while (iter.hasNext()) { @SuppressWarnings("rawtypes")Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue();rpc.addProperty(key.toString(), val.toString());}} else{return null;}//生成调用WebService方法的SOAP请求信息,并制定soap的版本SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);envelope.bodyOut = rpc;//设置是否调用的doNet开发的WebServiceenvelope.dotNet = true;envelope.setOutputSoapObject(rpc);//设置连接超时时间为20秒HttpTransportSE transport = new HttpTransportSE(endPoint, timeout);try{ //调用WebServicetransport.call(soapAction, envelope);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();//return "Error:调用web services出错!"+e.getMessage(); } //获取返回的数据SoapObject soapObject = null;try {soapObject = (SoapObject) envelope.getResponse();} catch (SoapFault e) {// TODO Auto-generated catch blocke.printStackTrace();return null;}System.out.println("soap" + soapObject.toString());return soapObject;}
解析WebService返回的XML的天气预报内容
private String parseWeather(SoapObject detail){String date = detail.getProperty(6).toString();if (date.isEmpty()){return "false";}String weatherToday = "今天:" + date.split(" ")[0];weatherToday = weatherToday + "\n天气:" + date.split(" ")[1];weatherToday = weatherToday + "\n气温:"+ detail.getProperty(5).toString();weatherToday = weatherToday + "\n风力:"+ detail.getProperty(7).toString() + "\n";System.out.println("weatherToday is " + weatherToday); return weatherToday;}
获取天气预报的方法
public void getWeather(String cityName){HashMap<String, Object> map = new HashMap<String, Object>();map.put("theCityName", cityName);SoapObject Result = common( METHOD_NAME,map, NAMESPACE, URL);String ret = parseWeather(Result); Message msg = new Message(); msg.what = this.MESSAGE_WEATHER; Bundle bundle = new Bundle(); bundle.putString("weatherdata", ret); msg.setData(bundle); mHandler.sendMessage(msg);}下面有整个工程的源代码myWeather
- Android获取天气预报
- android 获取天气预报
- android 获取天气预报
- Android获取天气预报Demo
- Android 根据城市获取天气(天气预报)
- androidの获取天气预报JSON 实现
- android天气预报获取-气象台webservice
- 获取天气预报
- 获取天气预报
- Android 天气预报
- Android天气预报
- Android天气预报
- Android天气预报
- Android 天气预报
- Android 天气预报
- Android 天气预报
- Android天气预报
- android 天气预报
- Uva - 10970 - Big Chocolate
- 自己未达到,需要加强的技术
- hdu 3359 Kind of a Blur
- 查询表的状态
- 目录 写(w)权限的重要性
- android 获取天气预报
- Apache和Tomcat实现负载均衡
- 句柄
- Oracle非for each row触发器的for each row实现
- 测试数据建模
- Restore IP Addresses
- 求这两个数组的中位数
- File文件如何选取指定类型文件
- linux内核分析笔记----内存管理