zoukankan      html  css  js  c++  java
  • webservice(二)示例代码

    下面由一个天气预报程序来示例webservice的实现及应用。

    注意这里需要引入一个外部jar文件,ksoap2-android-assembly-2.4-jar-with-dependencies.jar。

    下载地址:http://code.google.com/p/ksoap2-android/downloads/detail?name=ksoap2-android-assembly-2.4-jar-with-dependencies.jar&can=2&q=

    (1)工程结构

     

    (2)JAVA文件内容,EWeatherActivity.java

    package com.exuan.eweather;
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import java.io.UnsupportedEncodingException;
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.HttpTransportSE;
    import android.widget.TextView;

    public class EWeatherActivity extends Activity {
        private DayWeather[] mWeatherData;
        private TextView mDateaTextView;
        private TextView mDatebTextView;
        private TextView mDatecTextView;
        private TextView mTemperatureaTextView;
        private TextView mTemperaturebTextView;
        private TextView mTemperaturecTextView;
        private TextView mWindaTextView;
        private TextView mWindbTextView;
        private TextView mWindcTextView;
        
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //init the view
            mDateaTextView = (TextView)findViewById(R.id.textview_datea);
            mDatebTextView = (TextView)findViewById(R.id.textview_dateb);;
            mDatecTextView = (TextView)findViewById(R.id.textview_datec);
            mTemperatureaTextView = (TextView)findViewById(R.id.textview_temperaturea);
            mTemperaturebTextView = (TextView)findViewById(R.id.textview_temperatureb);
            mTemperaturecTextView = (TextView)findViewById(R.id.textview_temperaturec);
            mWindaTextView = (TextView)findViewById(R.id.textview_winda);
            mWindbTextView = (TextView)findViewById(R.id.textview_windb);
            mWindcTextView = (TextView)findViewById(R.id.textview_windc);
            updateData();
        }
        
        private void updateData()
        {
            new Thread(){
                public void run()
                {
                    String city = "北京";
                    getWeather(city);
                    mHandler.sendEmptyMessage(0);
                }
            }.start();
        }
        
        private Handler mHandler = new Handler(){
            public void handleMessage(Message msg)
            {
                updateWeather();
            }
        };
        
        private void updateWeather()
        {
            if(null != mWeatherData)
            {
                mDateaTextView.setText(mWeatherData[0].mDate);
                mDatebTextView.setText(mWeatherData[1].mDate);
                mDatecTextView.setText(mWeatherData[2].mDate);
                mTemperatureaTextView.setText(mWeatherData[0].mTemperature);
                mTemperaturebTextView.setText(mWeatherData[1].mTemperature);
                mTemperaturecTextView.setText(mWeatherData[2].mTemperature);
                mWindaTextView.setText(mWeatherData[0].mWind);
                mWindbTextView.setText(mWeatherData[1].mWind);
                mWindcTextView.setText(mWeatherData[2].mWind);
            }
        }
        
        private static final String NAMESPACE = "http://WebXml.com.cn/";
        // WebService address
        private static final String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";
        // WebService method name
        private static final String METHOD_NAME = "getWeatherbyCityName";
        // WebService action
        private static final String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName";
        private SoapObject mWeather;

        public void getWeather(String cityName) {
            try {
                //init soap object
                SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
                rpc.addProperty("theCityName", cityName);
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                envelope.bodyOut = rpc;
                envelope.dotNet = true;
                envelope.setOutputSoapObject(rpc);
                HttpTransportSE ht = new HttpTransportSE(URL);
                ht.debug = true;
                //call the action
                ht.call(SOAP_ACTION, envelope);
                //get the response soap object
                mWeather =(SoapObject) envelope.getResponse();
                getWeather(mWeather, cityName);
                return;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        private void getWeather(SoapObject detail,String local)throws UnsupportedEncodingException
        {
            mWeatherData = new DayWeather[3];
            mWeatherData[0] = new DayWeather();
            mWeatherData[0].mDate = detail.getProperty(6).toString();
            mWeatherData[0].mTemperature = detail.getProperty(5).toString();
            mWeatherData[0].mWind = detail.getProperty(7).toString();
            mWeatherData[1] = new DayWeather();
            mWeatherData[1].mDate = detail.getProperty(13).toString();
            mWeatherData[1].mTemperature = detail.getProperty(12).toString();
            mWeatherData[1].mWind = detail.getProperty(14).toString();
            mWeatherData[2] = new DayWeather();
            mWeatherData[2].mDate = detail.getProperty(18).toString();
            mWeatherData[2].mTemperature = detail.getProperty(17).toString();
            mWeatherData[2].mWind = detail.getProperty(19).toString();
        }
        
        //store a day's weather infomation
        class DayWeather
        {
            String mDate;
            String mTemperature;
            String mWind;
        }
        /*以下为LOG各property内容
            E/property1: 北京
            E/property4(: 2012-3-27 16:03:45
            E/property5(: 5℃/20℃
            E/property6: 3月27日 晴
            E/property7: 无持续风向微风
            E/property10: 今日天气实况:气温:23℃;风向/风力:西风 2级;湿度:8%;空气质量:较差;紫外线强度:中等。
            E/property12: 9℃/18℃
            E/property13: 3月28日 多云转阴
            E/property14: 无持续风向微风
            E/property17: 6℃/15℃
            E/property18(: 3月29日 阵雨转多云
            E/property19: 无持续风向微风转北风4-5级
         */
    }

    (3)布局文件内容,main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/textview_datea"
             android:text="@string/no_data"
             >
             </TextView>
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/textview_temperaturea"
             android:text="@string/no_data"
             >
             </TextView>
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/textview_winda"
             android:text="@string/no_data"
             >
             </TextView>        
        </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/textview_dateb"
             android:text="@string/no_data"
             >
             </TextView>
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/textview_temperatureb"
             android:text="@string/no_data"
             >
             </TextView>
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/textview_windb"
             android:text="@string/no_data"
             >
             </TextView>        
        </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/textview_datec"
             android:text="@string/no_data"
             >
             </TextView>
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/textview_temperaturec"
             android:text="@string/no_data"
             >
             </TextView>
         <TextView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:id="@+id/textview_windc"
             android:text="@string/no_data"
             >
             </TextView>        
        </LinearLayout>        
    </LinearLayout>

    (4)Manifest加上相应权限,AndroidManifest.xml
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>

    (5)运行结果

     

  • 相关阅读:
    字典序全排列算法研究
    【转】 SVM算法入门
    孤儿进程与僵尸进程[总结]
    Thymeleaf——入门与基本概述
    Springboot+vue项目学习整合(-)vue的安装
    WebService技术详解 (一)
    什么是NOSQL(SQL和NOSQL对比图文详解)
    数据库优化和扩容(图文详解)
    Spring Cloud原理详解(附案例+五大核心组件大量手绘图)
    spring STS download URL
  • 原文地址:https://www.cnblogs.com/jayceli/p/2428586.html
Copyright © 2011-2022 走看看