网站地图    收藏   

主页 > 前端 > css教程 >

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

来源:自学PHP网    时间:2015-04-14 14:51 作者: 阅读:

[导读] axis WebServices 完美调用天气预报,查询、显示 代码!效果:jsp页面:[html]%@ page language=java import=java.util.* pageEncoding=utf-8%%@ taglib prefix=c uri=http://java.sun.com/j......

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

效果:

 


jsp页面:


[html]
<%@ 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>   

<%@ 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:


[html]
<?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> 

<?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代码:

[html]
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.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";
 }

}

实现类代码:


[html]
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() ; 
    } 
  
  

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 类代码


[html] 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;    
    }    
 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论