互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据。气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server), 而各大站点的应用就去调用它们得到天气信息并以不同的样式去展示(WebService Client).一、 调用免费的web service获取天气预报信息1.1、找到提供天气预报信息的Webservice的网络地址:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx   

访问结果如下:

找到WebService的wsdl描述,通过URL地址http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

这个url有时可能会出现服务器忙等问题,多连接几次就好了。

1.2、客户端编码方式访问第三方提供的webService服务

  1、借助wsimport命令工具自动生成客户端代码

  创建一个测试项目,如下:

打开命令行窗口,切换到项目的src目录,执行"wsimport -keep http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl"生成客户端代码,如下图所示:

运行结果显示,使用wsimport工具直接生成客户端代码会抛异常, 无法生成客户端代码, 只是因为我们要调用的WebService是用.net写的,这个是Java调用net的webservice都有的问题,这个问题的解决办法如下:

  1. 将对应的wsdl文档保存到本地

注意有些浏览器没有保存文件这一项,我一开始用的时360,360没有保存文件这个功能,最后用IE浏览器了。

2、修改wsdl文档的部分内容: <s:element ref="s:schema" /><s:any /> 替换成 <s:any minOccurs="2" maxOccurs="2"/>

还有有些编辑器搜索的时候鼠标要放在文件的最开始,否则可能搜不到。然后搜索的时候搜索<s:element ref="s:schema" />这个

           不要搜索<s:element ref="s:schema" /><s:any />可能搜不到的。

          

           再次执行wsimport生成代码,这次使用保存在本地的WeatherWS.wsdl文件来进行生成,如下图所示:

           

          从执行结果显示,这一次可以正常生成代码了,刷新一下src目录,就可以看到生成的代码了,如下图所示:

           

                  src目录下是空的,包是自己生成的,无需自己创建包。

             2、借助生成的代码编写请求代码

                

package me.gacl.ws.client;import java.util.List;import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWS;
import cn.com.webxml.WeatherWSSoap;public class WeatherWSClient {public static void main(String[] args) {//创建一个WeatherWS工厂WeatherWS factory = new WeatherWS();//根据工厂创建一个WeatherWSSoap对象WeatherWSSoap weatherWSSoap = factory.getWeatherWSSoap();//调用WebService提供的getWeather方法获取西安市的天气预报情况ArrayOfString weatherInfo = weatherWSSoap.getWeather("西安", null);List<String> lstWeatherInfo = weatherInfo.getString();//遍历天气预报信息for (String string : lstWeatherInfo) {System.out.println(string);System.out.println("------------------------");}}
}运行程序时可能会出现如下错误:

这是因为服务没有连接上,接口调用失败,多运行几次就成功了

陕西 西安
------------------------
西安
------------------------
1344
------------------------
2016/01/17 20:10:00
------------------------
今日天气实况:气温:3℃;风向/风力:西北风 1级;湿度:38%
------------------------
紫外线强度:中等。空气质量:中。
------------------------
紫外线指数:中等,涂擦SPF大于15、PA+防晒护肤品。
感冒指数:易发,昼夜温差大,湿度大,注意防护。
穿衣指数:较冷,建议着厚外套加毛衣等服装。
洗车指数:较适宜,无雨且风力较小,易保持清洁度。
交通指数:良好,气象条件良好,车辆可以正常行驶。
空气污染指数:中,易感人群应适当减少室外活动。------------------------
1月17日 晴
------------------------
-3℃/7℃
------------------------
东北风微风
------------------------
0.gif
------------------------
0.gif
------------------------
1月18日 晴
------------------------
-4℃/4℃
------------------------
东北风微风
------------------------
0.gif
------------------------
0.gif
------------------------
1月19日 多云转阴
------------------------
-5℃/2℃
------------------------
西南风微风
------------------------
1.gif
------------------------
2.gif
------------------------
1月20日 小雪
------------------------
-3℃/2℃
------------------------
东北风微风
------------------------
14.gif
------------------------
14.gif
------------------------
1月21日 小雪转阴
------------------------
-4℃/2℃
------------------------
东北风微风
------------------------
14.gif
------------------------
2.gif
------------------------

运行结果

这样,我们通过生成的Client代码调用了第三方提供的webService服务获取到了西安市的天气预报信息。

http://www.cnblogs.com/xdp-gacl/p/4260627.html

转载于:https://www.cnblogs.com/leijiangtao/p/5137725.html

WebService学习总结——调用第三方提供的webService服务相关推荐

  1. java调用webservice_WebService学习总结(四)——调用第三方提供的webService服务

    只为成功找方法,不为失败找借口! 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气 ...

  2. 调用第三方提供的webService服务

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...

  3. WebService学习总结(三)——使用JDK开发WebService

    一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...

  4. webService学习7:调用天气接口

    1 参考  webService学习3:客户端生成webservice代码 生成客户端代码 2 在wsdl中搜索 wsdl:service入口类 3 代码编写 package test;impor ...

  5. java webservice 证书_java调用基于https的webservice(不生成密钥,基于spring配置,接收所有证书)...

    我的blog:个人博客 最近工作需要调用外部的webservice,之前一直搞的是基于http的ws,没啥好说的 网上很多教程.这次对方提供的接口是基于https的接口,在网上查找都是需要生成密钥,安 ...

  6. WebService学习总结十 使用Spring发布WebService并添加拦截器

    首先使用Spring方式发布成功WebService,再在客户端和服务器端引入出拦截器和入拦截器,引入的方式是写在配置文件中的. 客户端: 自定义的拦截器 package ws.client.inte ...

  7. [置顶]WebService学习总结(4)——第三方webService服务调用

    互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...

  8. WebService学习总结

    本文出自 http://www.cnblogs.com/ 的 孤傲苍狼 原文网址: http://www.cnblogs.com/xdp-gacl/category/629559.html http: ...

  9. webService学习9:jquery ajax调用webservice

    1 参照  webService学习7:调用天气接口 生成客户端代码 2 前台代码 <%@ page language="java" import="java.ut ...

最新文章

  1. POJ 1047 Round and Round We Go
  2. 为什么js中要用void 0 代替undefined
  3. 为什么Python是最吸金编程语言?
  4. 使用Xftp5连接云服务器
  5. Spring Cloud各组件
  6. java 树什么意思是什么意思是什么_Java数据结构和算法 - 什么是2-3-4树
  7. 金山词霸2009牛津版下载地址
  8. python背景怎么自定义铃声_iPhone —— 如何自制铃声(图文)
  9. 截取邮箱后缀名,拼接访问邮箱地址
  10. 微带线和带状线的SIEMC分析以及对DDR等长设置的影响
  11. 那些你不得不了解的HTML基础
  12. ThinkPHP5.0之PHPmailer发送邮箱(qq、163)
  13. element-ui中el-dialog使用技巧
  14. Selenium多浏览器测试
  15. python的self.boardx -= 5 什么意思_python小白求帮助
  16. 637. Average of Levels in Binary Tree
  17. awgn函数 matlab measure 什么意思,Matlab中 awgn 函数输入参数带有‘measured’ 时snr的含义...
  18. Git 修改提交的用户名和邮箱名字
  19. 输出自己的姓名python_【Python编程:显示自己的的姓名和学号,并将学号各位数字相加求和,并显示.】...
  20. 共享超级蜘蛛池,使用经验和技巧。

热门文章

  1. 这是我们的第一篇博客----偕行软件
  2. ActionScript 3.0 学习笔记三
  3. 四色原型图进行业务建模的思考
  4. (转)MVC模式参数传递的探究
  5. Java NIO编写Socket服务器的一个例子
  6. tomcat java环境配置
  7. 操作系统02进程管理Process_Description_and_Control
  8. day5 模拟用户登录
  9. SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元
  10. sqL编程篇(三) 游标与存储过程