zoukankan      html  css  js  c++  java
  • 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.调用服务层代码,编写客户端程序

  • 相关阅读:
    ceph pg pool
    linux 开放访问端口
    授予普通用户root权限
    ajax返回json中文是问号
    elasticseach 安装head
    python学习之路8
    JS正则表达式学习
    python学习之路7 前端学习4 jQuery 学习
    python学习之路7 前端学习3
    python 学习总结6 前端学习2
  • 原文地址:https://www.cnblogs.com/10158wsj/p/6774868.html
Copyright © 2011-2022 走看看