zoukankan      html  css  js  c++  java
  • axis WebServices 完美调用天气预报,查询、显示 代码!

    axis WebServices 完美调用天气预报,查询、显示 代码!

    效果:


    jsp页面:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   
    <html>   
        <head>  
       
            <title>城市天气信息</title> 
    
            
        </head>   
    <style>   
    body{   
        font-size:12px;   
    }   
    table{   
        border-collapse:sparate;   
        border-spacing:0px;   
    }   
    td{   
        padding:0px;   
        border:0px solid #000;   
        text-align:center;   
        font-size:12px;   
        color:#2A5CAA;   
        border-color:#2A5CAA;   
    }   
    .noMess{   
        text-align: center;   
        text-valign: center;   
    }   
      
    </style>     
        <body>  
        
        <form action="webservice.action" method="post" name="form1">
        	<input type="text" name="city" /> <input type="submit" value="查询"  id="sub"/>
        </form>
        <br/>
      
    	<!-- 显示天气 -->
        <c:if test="${not empty weathers}">
        <table border="0" cellpadding="0" cellspacing="0" width="380">   
           <tr>   
               <td>${weathers._regionFirst}  ${weathers._regionSecond} 72小时天气预报</td>   
               <td>最新上报时间:${weathers._reportTime}</td>   
           </tr>   
           <tr>   
               <td colspan="2">  
                   <!-- 今天天气 -->  
                   <table border="0" cellpadding="0" cellspacing="0">  
                    <tr><td>
                   ${weathers._todayDetail} 
                   </td></tr>  
                    
                   <tr>   
                       <td>${weathers._todayDate}  ${weathers._todayTemperature}</td>   
                   </tr> 
                  
                   <tr>   
                       <td> ${weathers._todayWind}</td>   
                   </tr>   
                   <tr>   
                       <td>   
                           <img src="./images/weather/${weathers._todayPic_1}"/>   
                             
                           <img src="./images/weather/${weathers._todayPic_2}">   
                       </td>   
                   </tr>   
                   <tr>   
                       <td></td>   
                   </tr>   
                   </table>   
               </td>   
           </tr>   
           <tr>   
               <td colspan="2"> 
                  <!-- 明天天气 -->  
                   <table border="0" cellpadding="0" cellspacing="0">   
                   <tr>   
                       <td>${weathers._tomorrowDate}  ${weathers._tomorrowTemperature}</td>   
                   </tr>   
                   <tr>   
                       <td>${weathers._tomorrowWind}</td>   
                   </tr>   
                   <tr>   
                       <td>   
                           <img src="./images/weather/${weathers._tomorrowPic_1}"/>   
                             
                           <img src="./images/weather/${weathers._tomorrowPic_2}">   
                       </td>   
                   </tr>   
                   <tr>   
                       <td></td>   
                   </tr>   
                   </table>   
               </td>   
           </tr>   
           <tr>   
               <td colspan="2">  
                   <!-- 后天天气 -->  
                   <table border="0" cellpadding="0" cellspacing="0">   
                   <tr>   
                       <td>${weathers._affterTomorrowDate}  ${weathers._affterTomorrowTemperature}</td>   
                   </tr>   
                   <tr>   
                       <td>${weathers._affterTomorrowWind}</td>   
                   </tr>   
                   <tr>   
                       <td>   
                           <img src="./images/weather/${weathers._affterTomorrowPic_1}"/>   
                             
                           <img src="./images/weather/${weathers._affterTomorrowPic_2}">   
                       </td>   
                   </tr>   
                   <tr>   
                       <td></td>   
                   </tr>   
                   </table>   
                </td>   
            </tr>  
        </table>  
        </c:if>   
    <!-- 自动加载     ajax 方式 等写
    <script type="text/javascript">
      window.onload= function(){
      //location.href=form1.submit();
      document.getElementById("sub").click();
      };     
            
    </script>
    -->    
        </body>   
    </html>  
    


    struts.xml:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    	"http://struts.apache.org/dtds/struts-2.3.dtd">
    
    <struts>
        <package name="default" namespace="/" extends="struts-default">
    
    
            <action name="webservice" class="accp.action.WebservicesAction">
                <result name="success">     
                index.jsp
                </result>
            </action>
        </package>
    
     
    </struts>
    




    action代码:

    package accp.action;
    
    import java.util.Hashtable;
    
    import accp.util.WeatherUtil;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class WebservicesAction extends ActionSupport {
    	private String city;
    	
    	//存放天气信息
    	Hashtable<String,Object> weathers=new Hashtable<String,Object>();
    	
    	public String getCity() {
    		return city;
    	}
    
    	public void setCity(String city) {
    		this.city = city;
    	}
    
    	public String execute() throws Exception {
    	System.out.println("-----开始查询-------");
    	
    	if("".equals(city)||null==city){
    		city="广州";
    	}
    	//得到天气信息
    	
    	weathers=WeatherUtil.getInstancce().getWea(city);
    	ActionContext.getContext().put("weathers", weathers);	
        return "success";
    	}
    
    }
    


    实现类代码:

    package accp.util;
    
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.Hashtable;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    
    
    
    public class WeatherUtil {
    	// 编码
    		private String enCoding ="utf-8";
    		// 目标url
    		private String targetWebserviceUri="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";
    		//private String targetWebserviceUri = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl";
    	private WeatherUtil(){};
    	
    	public static WeatherUtil getInstancce(){
    		return new WeatherUtil();
    	}
    	
    	 /**     
    	    * 对服务器端返回的XML进行解析     
    	    * WeatherObj 常量
    	    * @param city 用户输入的城市名称     
    	    * @return 字符串 用,分割     
    	   * @throws Exception 
    	    */    
    	public Hashtable<String,Object> getWea(String city) throws Exception{
    		
    	Hashtable<String,Object> weathers=new Hashtable<String,Object>();
    	Document doc=null;
    	
    	DocumentBuilderFactory  dbf=DocumentBuilderFactory.newInstance();
    	DocumentBuilder db=dbf.newDocumentBuilder();
    	
    	
    	InputStream is=getResponseSOAP(city);//获取流
    	
    	doc=db.parse(is); //获取 xml文档
    	
    	NodeList nl=doc.getElementsByTagName("string");//获取所有节点
       //循环读取 并放入hashtable
    	System.out.println("元素Length:"+nl.getLength());
    	
       for(int i =0;i<nl.getLength();i++){
    	   Node n = nl.item(i);
    	   String nodeValue=n.getFirstChild().getNodeValue();
    	   
    	   if(i !=11){
    		   System.out.println(nodeValue);
    		   weathers.put(WeatherObj.input.get(i), nodeValue) ;
    	   }
       }
    		   
       return weathers;
    	
    	  
    		
    		
    	}
    	
    	/**
    	 * 封装xml
    	 */
    	public String getRequestSOAP(String city){
    		
    		 StringBuffer sb = new StringBuffer();
    			sb.append("<?xml version="1.0" encoding="utf-8"?>");
    			sb.append("<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">");
    			sb.append("<soap:Body>");
    			sb.append("<getWeatherbyCityName xmlns="http://WebXml.com.cn/">");
    			sb.append(" <theCityName>"+city+"</theCityName>");
    			sb.append("</getWeatherbyCityName>");
    			sb.append("</soap:Body>");
    			sb.append("</soap:Envelope>");
    			
    			return sb.toString();
    		
    	}
    	
    	/**
    	 * @throws MalformedURLException 
    	 * 获得流
    	 */
     private InputStream getResponseSOAP(String city) throws Exception{
    	String requestSOAP=getRequestSOAP(city);
    	
    	   // 创建url
    	   URL  url= new URL(targetWebserviceUri);
    	   //得到url 的链接
    	   URLConnection conn = url.openConnection();
    	   conn.setUseCaches(false);
    	   conn.setDoInput(true);
    	   conn.setDoOutput(true);
    	   // 设置请求的头信息
    	   conn.setRequestProperty("Content-Type", "text/xml; charset="+enCoding);
    	   conn.setRequestProperty("Content-Length", requestSOAP.length()+"");
    	   conn.setRequestProperty("SOAPAction", "http://WebXml.com.cn/getWeatherbyCityName");
    	   
    	 OutputStream os = conn.getOutputStream();       
         OutputStreamWriter osw = new OutputStreamWriter(os, enCoding);       
         osw.write(requestSOAP);   
         osw.flush();       
         osw.close(); 
         
    	   return conn.getInputStream() ;
    	}
     
     
    }
    


    hashtable 类代码

    package accp.util;
    import java.util.Hashtable;   
    
    /**  
     * @author hxb  
     *  
     */  
    public class WeatherObj {   
      
        public static final String REGIONFIRST = "_regionFirst";//上级行政区   
        public static final String REGIONSECOND = "_regionSecond";//本级行政区   
        public static final String REGIONID = "_regionId";//行政区id   
        public static final String REGIONPIC = "_regionPic";//行政区图片   
        public static final String REPORTTIME = "_reportTime";//最新上报时间   
        
        
        public static final String TODAYTEMPERATURE = "_todayTemperature";//今天温度   
        public static final String TODAYDATE = "_todayDate";//今天日期   
        public static final String TODAYWIND = "_todayWind";//今天风况   
        public static final String TODAYPIC_1 = "_todayPic_1";//今天天气图片1   
        public static final String TODAYPIC_2 = "_todayPic_2";//今天天气图片2   
        public static final String TODAYDETAIL = "_todayDetail";//今天天气实况   
        public static final String ZHISHU = "_zhiShu";//各个指数   
        
        /*public static final String CHUANYIZHISHU = "穿衣指数:";   
        public static final String GANMAOZHISHU = "感冒指数:";   
        public static final String CHENLIANZHISHU = "晨练指数:";   
        public static final String JIAOTONGZHISHU = "交通指数:";   
        public static final String LIANGSHAIZHISHU = "晾晒指数:";   
        public static final String LVYOUZHISHU = "旅游指数:";   
        public static final String LUKUANGZHISHU = "路况指数:";   
        public static final String SHUSHIDUZHISHU = "舒适度指数:";   */
     /*   
        public static final String CHUANYIZHISHU = "穿衣指数:";   
        public static final String GUOMINZHISHU = "过敏指数:";   
        public static final String YUANDONGZHISHU = "运动指数:";   
        public static final String LIANGSHAIZHISHU = "晾晒指数:";   
        public static final String LVYOUZHISHU = "旅游指数:";   
        public static final String LUKUANGZHISHU = "路况指数:";   
        public static final String SHUSHIDUZHISHU = "舒适度指数:";   
        public static final String KONGQIWURANGZHISHU="空气污染指数:";
        */
        public static final String TOMORROWTEMPERATURE = "_tomorrowTemperature";//明天温度   
        public static final String TOMORROWDATE = "_tomorrowDate";//明天日期   
        public static final String TOMORROWWIND = "_tomorrowWind";//明天风况   
        public static final String TOMORROWPIC_1 = "_tomorrowPic_1";//明天天气图片1   
        public static final String TOMORROWPIC_2 = "_tomorrowPic_2";//明天天气图片2   
        
        
        
        public static final String AFTERTOMORROWTEMPERATURE = "_affterTomorrowTemperature";//后天温度   
        public static final String AFTERTOMORROWDATE = "_affterTomorrowDate";//后天日期   
        public static final String AFTERTOMORROWWIND = "_affterTomorrowWind";//后天风况   
        public static final String AFTERTOMORROWPIC_1 = "_affterTomorrowPic_1";//后天天气图片1   
        public static final String AFTERTOMORROWPIC_2 = "_affterTomorrowPic_2";//后天天气图片2   
        public static final String DESCRIPT = "_descript";//本地介绍   
           
        public static final Hashtable<Integer,String> input = new Hashtable<Integer,String>(0);//常量与数量对应   
           
        static{   
            input.put(0, REGIONFIRST);   
            input.put(1, REGIONSECOND);   
            input.put(2, REGIONID);   
            input.put(3, REGIONPIC);   
            input.put(4, REPORTTIME);   
               
            input.put(5, TODAYTEMPERATURE);   
            input.put(6, TODAYDATE);   
            input.put(7, TODAYWIND);   
            input.put(8, TODAYPIC_1);   
            input.put(9, TODAYPIC_2);   
            input.put(10, TODAYDETAIL);   
               
            input.put(11, ZHISHU);   
               
            input.put(12, TOMORROWTEMPERATURE);   
            input.put(13, TOMORROWDATE);   
            input.put(14, TOMORROWWIND);   
            input.put(15, TOMORROWPIC_1);   
            input.put(16, TOMORROWPIC_2);   
               
            input.put(17, AFTERTOMORROWTEMPERATURE);   
            input.put(18, AFTERTOMORROWDATE);   
            input.put(19, AFTERTOMORROWWIND);   
            input.put(20, AFTERTOMORROWPIC_1);   
            input.put(21, AFTERTOMORROWPIC_2);   
               
            input.put(22, DESCRIPT);   
        }   
           
        private String name;   
           
        private String message;   
      
        public String getMessage() {   
            return message;   
        }   
      
        public void setMessage(String message) {   
            this.message = message;   
        }   
      
        public String getName() {   
            return name;   
        }   
      
        public void setName(String name) {   
            this.name = name;   
        }   
    
    }
    



  • 相关阅读:
    composer的使用
    tp5短信接口的使用
    PHP序列化与反序列化
    PHP 的oop思想
    php单例模式
    统计图的使用(chart)
    jq的时间插件
    php中Excel操作
    Linux 常用命令
    think cmfx目录结构
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3220285.html
Copyright © 2011-2022 走看看