⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 weatherreader.java

📁 j2me简单实例,j2me教程加源码,希望大家喜欢
💻 JAVA
字号:
package com.j2medev.chapter4;

import java.io.*;
import java.util.Vector;
import javax.microedition.io.*;
import javax.microedition.lcdui.Form;
import org.kxml2.io.KXmlParser;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

public class WeatherReader implements Runnable{
    
    //MIDlet实例,方便回调
    private WeatherMIDlet midlet;
    //请求的p,u参数
    private String param;
    public static final String host = "http://xml.weather.yahoo.com/forecastrss?";
    
    public WeatherReader(WeatherMIDlet midlet,String param) {
        this.midlet = midlet;
        this.param = param;
    }
    
    public void run(){
        HttpConnection conn = null;
        try{
            //等待界面
            WaitingForm wait = new WaitingForm();
            midlet.setCurrent(wait);
            wait.update();
            conn = (HttpConnection)Connector.open(host+param);
            conn.setRequestMethod(HttpConnection.GET);
            int responseCode = conn.getResponseCode();
            wait.update();
            if(responseCode != HttpConnection.HTTP_OK){
                //简单起见,只要返回码不等于200则抛出异常
                throw new IOException("Can't connect to server");
            }
            KXmlParser parser = new KXmlParser();
            //设置KXmlParser的输入,注意编码格式为UTF-8
            parser.setInput(new InputStreamReader(conn.openInputStream(),"UTF-8"));
            wait.update();
            int eventType = parser.getEventType();
            Unit unit = new Unit();
            Location location = new Location();
            //存储
            Vector v = new Vector();
            while(eventType != XmlPullParser.END_DOCUMENT){
                //根据事件类型解析XML数据
                switch(eventType){
                    case XmlPullParser.START_TAG:{
                        String tag = parser.getName();
                        StringBuffer sb = new StringBuffer();
                        sb.append("<"+tag);
                        for(int i = 0;i<parser.getAttributeCount();i++){
                            sb.append(" "+parser.getAttributeName(i)+"=\""+parser.getAttributeValue(i)+"\"");
                        }
                        sb.append("/>");
                        if(tag.equals("yweather:location")){
                            for(int i = 0;i<parser.getAttributeCount();i++){
                                location.set(i,parser.getAttributeValue(i));
                            }
                            wait.update();
                        }else if(tag.equals("yweather:units")){
                            for(int i = 0;i<parser.getAttributeCount();i++){
                                unit.set(i,parser.getAttributeValue(i));
                            }
                            wait.update();
                        }else if(tag.equals("yweather:forecast")){
                            Forecast forecast = new Forecast();
                            forecast.setUnit(unit);
                            for(int i = 0;i<parser.getAttributeCount();i++){
                                forecast.set(i,parser.getAttributeValue(i));
                            }
                            v.addElement(forecast);
                            wait.update();
                        }
                        System.out.println(sb.toString());
                        break;
                    }
                    case XmlPullParser.START_DOCUMENT:{
                        System.out.println("Start Document");
                        break;
                    }case XmlPullParser.END_TAG:{
                        System.out.println("</"+parser.getName()+">");
                        break;
                    }case XmlPullParser.TEXT:{
                        System.out.println(parser.getText());
                        break;
                    }
                    default:
                        break;
                }
                eventType = parser.next();
            }
            System.out.println("End Doucment");
            wait.update();
            //显示结果
            midlet.displayWeather(v,location);
            
        }catch(IOException ex){
            //出错提示信息
            Form form = new Form("error");
            form.append(ex.getMessage());
            midlet.setCurrent(form);
        }catch(XmlPullParserException e){
            e.printStackTrace();
        }finally{
            //关闭连接
            try{
                if(conn != null)
                    conn.close();
            }catch(IOException e){
                
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -