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

代码如下:

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>

(0)

相关推荐

  • 修改js Calendar日历控件 兼容IE9/谷歌/火狐

    修改Calendar日历控件 兼容IE9,谷歌,火狐. 只是能用,出现的位置有所不同,希望有高手再帮我改改吧,谢谢 一. 复制代码 代码如下: this.iframe = window.frames("meizzCalendarIframe"); 修改为 复制代码 代码如下: this.iframe = window.frames["meizzCalendarIframe"]; 二. 复制代码 代码如下: var a = (arguments.length==0)

  • Au3截取腾讯天气的脚本

    其实很简单的Replace就搞定了. 复制代码 代码如下: #include <IE.au3> Filedelete ("Tq.txt") $Url="http://www.soso.com/tb.q" $oIE = _IECreate ($url, 0, 0) $sHTML = _IEBodyReadHTML ($oIE) $array= StringRegExp($sHTML, "<(?i)strong class=fs_14>

  • 日历控件和天气使用分享

    感谢气象局的天气预报: <iframe allowtransparency="true" frameborder="0" width="292" height="98" scrolling="no" src="http://tianqi.2345.com/plugin/widget/index.htm?s=1&z=1&t=0&v=0&d=2&bd=1&

  • JS学习之一个简易的日历控件

    这个日历控件类似于园子用的日历,如下图: 这种日历控件实现起来不难,下面简单分析下我的思路: 首先,是该控件的可配置项: 复制代码 代码如下: ... settings: { firstDayOfWeek: 1, baseClass: "calendar", curDayClass: "curDay", prevMonthCellClass: "prevMonth", nextMonthCellClass: "nextMonth&quo

  • javascript实现日历控件(年月日关闭按钮)

    经常使用google的朋友一定对google绚丽的日历控件记忆犹新吧,那我们也来实现一个,虽然功能和效果比不上,但重要的是实现的过程. 下面是要实现的html结构: <div id="a"><div id="head"><span id="yface">年:<select id="year"></select></span><span id=&quo

  • js日历控件(可精确到分钟)

    .menu_iframe{position:absolute; visibility:inherit; top:0px; left:0px; width:170px; z-index:-1; filter: Alpha(Opacity=0);} .cal_table{ border:#333333 solid 1px; border-collapse:collapse; background:#ffffff; font-size:12px} .cal_table td{ border:1px #

  • php使用百度天气接口示例

    注意地区要转码的百度ak申请地址:http://lbsyun.baidu.com/apiconsole/key 复制代码 代码如下: <?php $city="嘉兴";$content = file_get_contents("http://api.map.baidu.com/telematics/v3/weather?location=%E5%98%89%E5%85%B4&output=json&ak=5slgyqGDENN7Sy7pw29IUvrZ&

  • 简约JS日历控件 实例代码

    运行结果如下: 复制代码 代码如下: <script type="text/javascript" language="javascript">function choose_date_czw(date_id,objtd){if(date_id=="choose_date_czw_close"){    document.getElementByIdx_x_x("choose_date_czw_id").style

  • jquery日历控件实现方法分享

    注释掉的是默认的css样式,你可以修改成自己的样式实现另一个风格,大家参考使用吧 复制代码 代码如下: /** * jQuery Calendar Plugin */(function($, window) { 'use strict';    $.fn.calendar = function(options) {        //check is select, if nothing select, return this        if (!this.length) {        

  • php+javascript的日历控件

    复制代码 代码如下: <html> <head> <title>js calendar</title> <script language="javascript"> /* Copyright Mihai Bazon, 2002-2005 | www.bazon.net/mishoo * ----------------------------------------------------------- * * The DHT

  • 微信公众平台天气预报功能开发

    本来是想自己直接从中国天气网获取信息并处理,后来发现处理起来太麻烦,而且要获取所有城市的城市编码,再有就是!不支持国外天气!!(我们学校有很多毕业生在国外上学,所以我考虑还是做出支持国外天气的版本) 因此考虑直接调用别人的API,一开始选用了方倍工作室已经做好的接口(无奈也没有国外).直到有一天返回北京天气温度是零下的时候(当时天热到不敢出门)...换!换!换! 后来终于发现最靠谱的接口----百度的天气API. 废话少说,首先大家要上 百度地图API申请一个专用key(大概一分钟就搞定了,很方

  • Vista天气预报--修正不显示中国天气预报的BUG

    经过努力,修改了weather.js文件,可以获得中国的天气预报了! 之前已经由朋友说过,中国地区不能使用天气预报,是因为wlsrvc.dll文件检测到区域设置为中国,就返回1506,提示"您当前所在国家或地区不支持此服务." 其实如果我们直接在浏览器中输入地址是可以返回中国地区的天气预报的,因此我们可以绕过这个dll文件,自己修改脚本直接获取信息. 我们可以通过Microsoft.XMLDOM来获取网上的xml数据,然后把里面的数据解析到一个类中,返回给原来的脚本显示出来. 为了减少

  • .net mvc页面UI之Jquery博客日历控件实现代码

    一.效果图 二.页面文件 页面上需要添加<div id="cal"></div>标记. 三.JS代码 复制代码 代码如下: // JavaScript 日历 $(document).ready(function () { //当前时间 $now = new Date();                      //当前的时间 $nowYear = $now.getFullYear();          //当前的年 $nowMonth = $now.get

  • 利用中国天气预报接口实现简单天气预报

    复制代码 代码如下: <?phpheader("content-type:text/html;charset=utf-8");$weather = file_get_contents("http://www.weather.com.cn/data/sk/101280601.html");echo $weather;?> 复制代码 代码如下: <html><head><meta http-equiv="Content

随机推荐