WebService學習--股票走勢圖+天氣預報實現


      互聯網上面有很多的免費webService服務,我們可以調用這些免費的WebService服務,將一些其他網站的內容信息集成到我們的Web應用中顯示,下面就以獲取股票數據和天氣預報為例進行學習。

這是一些WebService免費服務接口,供大家學習參考:http://blog.csdn.net/jingqia/article/details/17398673

  有了之前的基礎,學習起來難度就變得沒那么高了!

一、 調用免費的web service獲取股票信息

1.找到股票的服務網址:http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx

接着輸入:http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?wsdl,在原來的網址后面加?wsdl即可

2.新建javaWeb項目stock_test打開命令窗口輸入:wsimport -s E:\\workingFoilder\\projectSpace\\stock_test\\src -p com.wxzz.client -keep http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?wsdl回車生成相關類信息,如圖,警告可以忽略,不報錯就可以了

刷新項目,可以看到包下生成了很多類

根據生成的類,編寫相關代碼

 1 package com.wxzz.test;
 2 import java.util.List;
 3 import com.wxzz.client.ArrayOfString;
 4 import com.wxzz.client.ChinaStockWebService;
 5 import com.wxzz.client.ChinaStockWebServiceSoap;
 6 public class Test {
 7     public static void main(String[] args) {
 8         //調用股票服務
 9         ChinaStockWebService service=new ChinaStockWebService();
10         //創建ChinaStockWebServiceSoap對象
11         ChinaStockWebServiceSoap serviceScope=service.getChinaStockWebServiceSoap();
12         //獲取股票數據
13         ArrayOfString aos=serviceScope.getStockInfoByCode("sz601169");
14         //遍歷股票信息
15         List<String> list=aos.getString();
16         for(String str:list){
17             System.out.println(str);
18             System.out.println("+----+");
19         }
20     }
21 }

運行程序,結果如下:

 

 結果不是想要的,可能是股票數據給服務關閉的原因吧!

為了進一步測試,這個服務中有幾個方法,大家可以自己測試,我進行了返回字節圖片的測試

代碼如下:

服務接口:

 1 package com.wxzz.service;
 2 
 3 /**
 4  * @author wangsj
 5  *
 6  */
 7 public interface StockService {
 8     //顯示股票走勢圖片
 9     public byte[] getStockByte(String stockCode);
10 
11 }

服務接口實現類:

 1 package com.wxzz.service;
 2 import com.wxzz.client.ChinaStockWebService;
 3 import com.wxzz.client.ChinaStockWebServiceSoap;
 4 
 5 /**
 6  * @author wangsj
 7  *
 8  */
 9 public class StockServiceImpl implements StockService {
10 
11     @Override
12     public byte[] getStockByte(String stockCode) {
13         ChinaStockWebService service=new ChinaStockWebService();
14         ChinaStockWebServiceSoap serviceScope=service.getChinaStockWebServiceSoap();
15         return serviceScope.getStockImageByteByCode(stockCode);
16         
17     }
18 
19 }

控制層:

 1 package com.wxzz.servlet;
 2 import java.io.IOException;
 3 import java.io.OutputStream;
 4 import javax.servlet.ServletException;
 5 import javax.servlet.http.HttpServlet;
 6 import javax.servlet.http.HttpServletRequest;
 7 import javax.servlet.http.HttpServletResponse;
 8 
 9 import com.wxzz.service.StockServiceImpl;
10 
11 public class GetStockImageServlet extends HttpServlet {
12     private static final long serialVersionUID = 1L;
13     private StockServiceImpl ss=new StockServiceImpl();
14   
15     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
16         this.doPost(request, response);
17     }
18     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
19         byte[]b=ss.getStockByte("sh601169");
20         response.setHeader("content-type", "image/jpeg");
21         OutputStream os=response.getOutputStream();
22         os.write(b);
23     }
24 
25 }

輸入網址:http://localhost:7001/stock_test/GetStockImageServlet出現以下結果

出現了股票走勢圖,驗證正確!

 

二、 調用免費的web service獲取天氣預報信息

1.步驟還是一樣,首先找到天氣預報接口網址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx輸入瀏覽器可以看到以下信息:

然后輸入http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl獲取以下信息:

2.新建項目weather_test,然后打開命令窗口,執行 E:\\workingFoilder\\projectSpace\\weather_test\\src -p com.wxzz.client -keep http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

出現了錯誤,經過查資料發現由於運行結果顯示,由於要調用的WebService是用.net寫的,這個是Java調用net的webservice都有的問題,這個問題的解決辦法如下:

1)在http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl打開的頁面空白處點右鍵另存為,把后綴名改為.wsdl,保存即可,注意保存的路徑

2)使用EditPlus或其他文本編輯器打開該文件,將<s:element ref="s:schema" /><s:any /> 替換成 <s:any minOccurs="2" maxOccurs="2"/>

3)再次打開命令窗口輸入:wsimport -s E:\\workingFoilder\\projectSpace\\weather_test\\src -p com.wxzz.client -keep D:\WeatherWebService.asmx.wsdl,回車編譯通過

刷新項目,可以看到各類信息如下:

3、新建測試類,進行測試

查看API可以看到各個方法的用法

測試代碼如下:

 1 package com.wxzz.test;
 2 import java.util.List;
 3 import com.wxzz.client.ArrayOfString;
 4 import com.wxzz.client.WeatherWebService;
 5 import com.wxzz.client.WeatherWebServiceSoap;
 6 
 7 /**
 8  * @author wangsj
 9  *
10  */
11 public class TestWeather {
12     public static void main(String[] args) {
13         //獲取服務
14         WeatherWebService weatherService=new WeatherWebService();
15         WeatherWebServiceSoap soap=weatherService.getWeatherWebServiceSoap();
16         ArrayOfString arrayOfString=soap.getWeatherbyCityName("北京");
17         //遍歷結果
18         List<String> list=arrayOfString.getString();
19         for(String str:list){
20             System.out.println(str);
21             System.out.println("**************");
22         }
23     }
24 }

運行結果如下:結果比較多

直轄市
**************
北京
**************
54511
**************
54511.jpg
**************
2017-4-27 16:00:35
**************
13℃/28**************
4月27日 晴
**************
北風4-5級轉微風
**************
0.gif
**************
0.gif
**************
今日天氣實況:氣溫:28℃;風向/風力:西北風 5級;濕度:7%;紫外線強度:強。空氣質量:良。
**************
紫外線指數:強,塗擦SPF大於15、PA+防曬護膚品。
感冒指數:較易發,風較大,較易發生感冒,注意防護。
穿衣指數:熱,適合穿T恤、短薄外套等夏季服裝。
洗車指數:較不宜,風力較大,洗車后會蒙上灰塵。
運動指數:較適宜,風力稍強,推薦您進行室內運動。
空氣污染指數:良,氣象條件有利於空氣污染物擴散。

**************
14℃/30**************
4月28日 晴
**************
北風3-4級轉微風
**************
0.gif
**************
0.gif
**************
16℃/32**************
4月29日 晴
**************
南風3-4級轉北風微風
**************
0.gif
**************
0.gif
**************
北京位於華北平原西北邊緣,市中心位於北緯39度,東經116度,四周被河北省圍着,東南和天津市相接。全市面積一萬六千多平方公里,轄12區6縣,人口1100余萬。北京為暖溫帶半濕潤大陸性季風氣候,夏季炎熱多雨,冬季寒冷干燥,春、秋短促,年平均氣溫10-12攝氏度。北京是世界歷史文化名城和古都之一。早在七十萬年前,北京周口店地區就出現了原始人群部落“北京人”。而北京建城也已有兩千多年的歷史,最初見於記載的名字為“薊”。公元前1045年北京成為薊、燕等諸侯國的都城;公元前221年秦始皇統一中國以來,北京一直是中國北方重鎮和地方中心;自公元938年以來,北京又先后成為遼陪都、金上都、元大都、明清國都。1949年10月1日正式定為中華人民共和國首都。北京具有豐富的旅游資源,對外開放的旅游景點達200多處,有世界上最大的皇宮紫禁城、祭天神廟天壇、皇家花園北海、皇家園林頤和園,還有八達嶺、慕田峪、司馬台長城以及世界上最大的四合院恭王府等各勝古跡。全市共有文物古跡7309項,其中國家文物保護單位42個,市級文物保護單位222個。北京的市樹為國槐和側柏,市花為月季和菊花。另外,北京出產的象牙雕刻、玉器雕刻、景泰藍、地毯等傳統手工藝品馳譽世界。
**************

三、 總結

 通過案列可以總結出,使用第三方的WebService接口,大致分為以下幾個步驟:

1.首先獲取第三方接口地址,訪問API熟悉里面的方法怎么用

2.在網址后面添加?wsdl繼續進行訪問,如果能訪問通過,表示可用

3.在項目中創建需要引入WebService服務的位置,即這些服務需要放的位置,一般都在服務層供調用

4.打開命令窗口借助jdk的wsimort.exe工具wsimport 命令生成相應的服務層(客戶端)代碼,如果出現錯誤,及時解決

5.調用服務層代碼,編寫客戶端程序


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM