wenserver获取天气预报数据实例分享

 更新时间:2013年12月18日 15:56:11   作者:  
wenserver获取天气预报数据,实现android显示天气信息

复制代码 代码如下:

package tao.cs;

import java.io.IOException;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
import org.xmlpull.v1.XmlPullParserException;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class WeatherMain extends Activity {
    Button btn01;  
    TextView tv01,tv02;  
    ImageView imgview01,imgview02;  
    EditText et01;  

    int int_img_1;  
    int int_img_2;  

     public void onCreate(Bundle savedInstanceState) {  
         super.onCreate(savedInstanceState);  
         setContentView(R.layout.main);  

         //组件  
       //  final EditText et01=(EditText) findViewById(R.id.et_TextWeather);  
         btn01=(Button) findViewById(R.id.Button01);  
         tv01=(TextView) findViewById(R.id.TextView01);  
         tv02=(TextView) findViewById(R.id.TextView02);  
         imgview01=(ImageView) findViewById(R.id.ImageView01);  
         imgview02=(ImageView) findViewById(R.id.ImageView02);  
         et01=(EditText) findViewById(R.id.EditText01);  

         btn01.setOnClickListener(new OnClickListener() {  

             public void onClick(View v) {  
                 showWeather();  

             }  
         });  

           
     }//onCreate ***************end  
     protected void showWeather(){//显示所有的信息  

         String str_city=et01.getText().toString();  
         if(str_city.length()==0){  
             str_city="重庆";  

         }  
//         str_city="济南";  
         getWeather(str_city);  
         tv01.setText(getString_WeatherToday());  //今天天气  
         tv02.setText(getString_WeatherCurrent());//当前天气  
         imgview01.setImageResource(getIcon_1());  //当前的两个图标  
         imgview02.setImageResource(getIcon_2());  

     }//showWeather()*****************end  

     private static final String NAME_SPACE="http://WebXml.com.cn/";//命名空间  ,后期测试一下命名空间的作用  
     private static final String METHOD_NAME = "getWeatherbyCityName";  
     private static String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";// 投递SOAP数据的目标地址  
     private static String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName";  

     protected void getWeather(String strcityname){//str 是城市名  
  /* 
   * 这里要做的工作是 提交客户端的请求, 
   * 然后获得服务端返回的复杂对象,后面会有专门的 
   */ 
         SoapObject sobject=new SoapObject(NAME_SPACE, METHOD_NAME);  
         sobject.addProperty("theCityName", strcityname);  

         AndroidHttpTransport ht=new AndroidHttpTransport(URL);  
         ht.debug=true;  

         SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);//告诉SoapSerializationEnvelope把构造好的SoapObject封装进去:  
         envelope.bodyOut=sobject;  
         envelope.dotNet=true;  
         envelope.setOutputSoapObject(sobject);  

         try {  

             ht.call(SOAP_ACTION, envelope);  

         } catch (IOException e) {  

             e.printStackTrace();  
         } catch (XmlPullParserException e) {  

             e.printStackTrace();  
         }  
         // 
         SoapObject result=(SoapObject) envelope.bodyIn;  
         SoapObject detail=(SoapObject) result.getProperty("getWeatherbyCityNameResult");//类似于获取服务端返回复杂节点的一个内接点  
         parseWeather(detail);   

     }//getweather *****************end  

     String str_weather_today=null;  
     String str_weather_current=null;  
     protected void parseWeather(SoapObject so){  
         /* 
          * 解析复杂节点,并对相应的参数赋值,为后面的方法准备 
          */ 
         //第六个参数是概况,包括日期,天气....  
         String date=so.getProperty(6).toString();  

         str_weather_today="今天: "+date.split(" ")[0];  
         str_weather_today=str_weather_today+"\n气温:"+so.getProperty(5).toString();  
         str_weather_today=str_weather_today+"\n风力:"+so.getProperty(7).toString()+"\n";  
         //两个图标  
         int_img_1=parseIcon(so.getProperty(8).toString());  
         int_img_2=parseIcon(so.getProperty(9).toString());  

         str_weather_current=so.getProperty(10).toString();  
     }  
     public String getString_WeatherToday(){  
         return str_weather_today;  
     }  
     public String getString_WeatherCurrent(){  
         return str_weather_current;  
     }  

     public int getIcon_1(){  
         return int_img_1;  
     }  
     public int getIcon_2(){  
         return int_img_2;  
     }  
     public int   parseIcon(String strIcon){  
         if (strIcon == null) return -1;  

         if ("0.gif".equals(strIcon)) return R.drawable.a_0;  
         if ("1.gif".equals(strIcon)) return R.drawable.a_1;  
         if ("2.gif".equals(strIcon)) return R.drawable.a_2;  
         if ("3.gif".equals(strIcon)) return R.drawable.a_3;  
         if ("4.gif".equals(strIcon)) return R.drawable.a_4;  
         if ("5.gif".equals(strIcon)) return R.drawable.a_5;  
         if ("6.gif".equals(strIcon)) return R.drawable.a_6;  
         if ("7.gif".equals(strIcon)) return R.drawable.a_7;  
         if ("8.gif".equals(strIcon)) return R.drawable.a_8;  
         if ("9.gif".equals(strIcon)) return R.drawable.a_9;  
         if ("10.gif".equals(strIcon)) return R.drawable.a_10;  
         if ("11.gif".equals(strIcon)) return R.drawable.a_11;  
         if ("12.gif".equals(strIcon)) return R.drawable.a_12;  
         if ("13.gif".equals(strIcon)) return R.drawable.a_13;  
         if ("14.gif".equals(strIcon)) return R.drawable.a_14;  
         if ("15.gif".equals(strIcon)) return R.drawable.a_15;  
         if ("16.gif".equals(strIcon)) return R.drawable.a_16;  
         if ("17.gif".equals(strIcon)) return R.drawable.a_17;  
         if ("18.gif".equals(strIcon)) return R.drawable.a_18;  
         if ("19.gif".equals(strIcon)) return R.drawable.a_19;  
         if ("20.gif".equals(strIcon)) return R.drawable.a_20;  
         if ("21.gif".equals(strIcon)) return R.drawable.a_21;  
         if ("22.gif".equals(strIcon)) return R.drawable.a_22;  
         if ("23.gif".equals(strIcon)) return R.drawable.a_23;  
         if ("24.gif".equals(strIcon)) return R.drawable.a_24;  
         if ("25.gif".equals(strIcon)) return R.drawable.a_25;  
         if ("26.gif".equals(strIcon)) return R.drawable.a_26;  
         if ("27.gif".equals(strIcon)) return R.drawable.a_27;  
         if ("28.gif".equals(strIcon)) return R.drawable.a_28;  
         if ("29.gif".equals(strIcon)) return R.drawable.a_29;  
         if ("30.gif".equals(strIcon)) return R.drawable.a_30;  
         if ("31.gif".equals(strIcon)) return R.drawable.a_31;  

         return 0;  
     }


}

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<EditText

 android:id="@+id/EditText01"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content">
</EditText>
<Button
 android:text="查询"
 android:id="@+id/Button01"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content">
</Button>
<ImageView
 android:id="@+id/ImageView01"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content">
</ImageView>
<ImageView
 android:id="@+id/ImageView02"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content">
</ImageView>
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/TextView01"

    />
<TextView

 android:id="@+id/TextView02"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content">
</TextView>


</LinearLayout>

相关文章

  • 解决Android屏幕四周闪现红框的问题

    解决Android屏幕四周闪现红框的问题

    这篇文章主要介绍了解决Android屏幕四周闪现红框的问题,需要的朋友可以参考下
    2017-06-06
  • Android App 与 U 盘通信示例详解

    Android App 与 U 盘通信示例详解

    本篇文章主要介绍了Android App 与 U 盘通信详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Android编程之交互对话框实例浅析

    Android编程之交互对话框实例浅析

    这篇文章主要介绍了Android编程之交互对话框,结合实例形式简单分析了Android交互对话框AlertDialog的功能、简单用法及相关注意事项,需要的朋友可以参考下
    2017-03-03
  • flutter监听app进入前后台状态的实现

    flutter监听app进入前后台状态的实现

    在开发app的过程中,我们经常需要知道app处于前后台的状态,本文主要介绍了flutter监听app进入前后台状态的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • android自定义控件和自定义回调函数步骤示例

    android自定义控件和自定义回调函数步骤示例

    这篇文章主要介绍了android自定义控件步骤示例,包括为View类增加属性、响应用户消息、自定义回调函数等方法
    2014-01-01
  • Android13 加强Intent filters 的安全性

    Android13 加强Intent filters 的安全性

    这篇文章主要介绍了Android13 加强Intent filters 的安全性,文章基于Android13 展开Intent filters 安全性加强的详细介绍,需要的小伙伴可以参考一下
    2022-05-05
  • 修改Android App样式风格的方法

    修改Android App样式风格的方法

    本文讲的是如何修改Android App样式风格的方法,具体可以看下面的代码
    2013-11-11
  • Android 获取服务器与客户端时差的实例代码

    Android 获取服务器与客户端时差的实例代码

    下面小编就为大家分享一篇Android 获取服务器与客户端时差的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Kotlin Job启动流程源码层深入分析

    Kotlin Job启动流程源码层深入分析

    如果要我拿现实中的一事物与Kotlin协程中的Job做一个类比,那么我会把Job比作成海洋中的冰山。自由漂浮的冰山约有90%体积沉在海水表面下,因此看着浮在水面上的形状并猜不出水下的形状
    2022-11-11
  • Android Studio无法打开得问题解决方法

    Android Studio无法打开得问题解决方法

    这篇文章主要详细介绍了Android Studio无法打开问题解决办法,文中有详细的解决步骤和图文介绍,对我们解决这个问题有一定的帮助,需要的朋友可以参考下
    2023-07-07

最新评论