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

互联网上面有很多的免费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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【017】◀▶ C#学习(九) - ADO.NET

《C#入门经典&#xff08;中文第四版&#xff09;》在程序中访问数据库学习笔记 --------------------------------------------------------------------------------------------------------- ●● 目录&#xff1a; A0 ………… System.Data.SqlClient 命名空间 A1 ……………

[react] 浏览器为什么无法直接JSX?怎么解决呢?

[react] 浏览器为什么无法直接JSX&#xff1f;怎么解决呢&#xff1f; 因为浏览器只能解决原生的JS代码&#xff0c;jsx不属于原生的js&#xff0c;它是类似于html的语法&#xff0c;然后转化成一个js对象。 这个转化的过程就是通过Babel的babel/plugin-transform-react-jsx插…

vim 基础学习之文件跳转

1. -当前文件上次跳转之前的位置2. .-当前文件上次修改的位置,只要是发生了可能导致变化的命令操作就会被标记&#xff0c;哪怕实际结果没有变化3. ^-当前文件上次插入的位置,只要是发生了插入操作命令就会被标记&#xff0c;哪怕实际结果没有变化4. [-当前文件上次修改或者复制…

[react] react声明组件有哪几种方法,各有什么不同?

[react] react声明组件有哪几种方法&#xff0c;各有什么不同&#xff1f; 1、无状态组件 2、有状态组件 3、高阶组件 4、容器组件 5、回调组件 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

【转】主流PHP框架间的比较(Zend Framework,CakePHP,CodeIgnit...

2019独角兽企业重金招聘Python工程师标准>>> 【转】主流PHP框架间的比较&#xff08;Zend Framework&#xff0c;CakePHP&#xff0c;CodeIgniter&#xff0c;Symfony&#xff0c;ThinkPHP&#xff0c;FleaPHP&#xff09; 2011年08月14日 星期日 12:51 转载自 leol…

[react] createElement与cloneElement两者有什么区别?

[react] createElement与cloneElement两者有什么区别&#xff1f; createElement是创建一个React元素&#xff0c;jsx即是这个函数的语法糖&#xff1b;它的函数签命是React.createElement(type, [props], [...children])cloneElement是拷贝一个React元素&#xff0c;可选择在…

第8章 Service基础Activity与Service绑定

要知道如果调用函数startService方法&#xff0c;那么即使你的程序退出了&#xff0c;但是Service依然运行在后台;也就是说此时想要停止service必须调用stopService方法。 现在我们把Activity与Service绑定在一起&#xff0c;那就是Service要随着程序的退出而终止&#xff0c;此…

[react-router] React-Router 4的switch有什么用?

[react-router] React-Router 4的switch有什么用&#xff1f; Switch的 子组件只能是Route或者Switch组件&#xff0c;它的作用是匹配到下面的第一个路由组件&#xff0c;下面的路由组件就不再进行匹配展示了 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。…

linux_shell_根据网站来源分桶

应用场景&#xff1a; 3kw行url\thtml记录 【网站混合】 需要&#xff1a;按照网站来源分桶输出 执行shell cat */*pack.html|awk -F \t {split($1,arr,"/");sitearr[3];print $0 > site} 转载于:https://www.cnblogs.com/cphmvp/p/5139994.html

[react] 你知道Virtual DOM的工作原理吗?

[react] 你知道Virtual DOM的工作原理吗&#xff1f; Virtual DOM是什么&#xff1a;虚拟DOM是真实DOM的javascript对象的映射Virtual DOM的工作原理&#xff1a;数据驱动视图更新这个过程中&#xff0c;首先会改变虚拟DOM对象&#xff0c;一个视图的更新周期&#xff0c;首先…

C#正则表达式积累

感谢&#xff1a;侧身向南边 http://www.cnblogs.com/kissknife/archive/2008/03/23/1118423.html的分享给了自己学习的机会 -------------------------------------C#的正则表达式-------------------------------------------的作用&#xff1a;string x"D:\\My Huang…

如何利用业务时间提升自我

转载于:https://www.cnblogs.com/helloIT/articles/5140273.html

[react] react兄弟组件如何通信?

[react] react兄弟组件如何通信&#xff1f; 状态提升&#xff0c;通过父组件的state和方法传递到两个子组件 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

'800a0005' 图片上传出现写入文件失败的错误 -- 修改pload_5xsoft.inc

一、基本问题 一般是文件写入的路径不对&#xff0c;或者是目录的权限没有设置好&#xff08;必须对everyone或者来宾用户IIS_IUSRS设置为完全访问&#xff09; 二、特殊问题 1、错误提示&#xff1a; ADODB.Stream 错误 800a0bbc 写入文件失败。 /code/zhaosheng1/ADMIN/uplo…

AutoMapper用法一瞥

前段时候做个小项目用到了autoMapper&#xff08;参考了NOP里的用法&#xff09;&#xff0c;感觉还行&#xff0c;用起来挺方便的。首先复杂的东西我就不说了&#xff0c;至于详细的教程我也就不写了&#xff0c;比较园子里有很多这样的文章&#xff0c;我就分享下&#xff0c…

ping得通外网,上得了QQ,游戏,却打不开网页。

操作系统&#xff1a;win7_64bit 下午帮我小艾优化电脑&#xff0c;不知道把什么插件给卸载了。 她回来以上就上不了网&#xff0c;我首先ping网关&#xff0c;DNS&#xff0c;外网&#xff0c;都通。 登QQ正常。 我的思路&#xff1a; 先把Socket套字结相关的卸载掉就是&#…

WebGIS中一种根据网格索引判断点面关系的方法

文章版权由作者李晓晖和博客园共有&#xff0c;若转载请于明显处标明出处&#xff1a;http://www.cnblogs.com/naaoveGIS/。 1.背景 判断点面关系的算法有很多&#xff0c;在我之前的博文中有一篇专门对其进行了描述&#xff1a;判断点是否落在面中的Oracle存储过程描述。其中提…

[react] 怎样在react中创建一个事件?

[react] 怎样在react中创建一个事件&#xff1f; var EventEmitter require(events).EventEmitter; class App extends Component{ constructor(props){ super(props); } componentDidMount(){ this.itemChange emitter.addListener(ItemChange, (msg,data)>console.log(…

重写Checkbox 改写选择框的大小

/* 作者&#xff1a;Starts_2000* 日期&#xff1a;2009-07-30* 网站&#xff1a;http://www.csharpwin.com CS 程序员之窗。* 你可以免费使用或修改以下代码&#xff0c;但请保留版权信息。* 具体请查看 CS程序员之窗开源协议&#xff08;http://www.csharpwin.com/csol.html&…

HDU4349--Xiao Ming's Hope(数论)

输入一个n(1<n<108)&#xff0c;求C(n,0),C(n,1),C(n,2)...C(n,n)有多少个奇数。 Lacus定理 http://blog.csdn.net/acm_cxlove/article/details/7844973 A、B是非负整数&#xff0c;p是质数。AB写成p进制&#xff1a;Aa[n]a[n-1]...a[0]&#xff0c;Bb[n]b[n-1]...b[0]。…