flex与java通信二:webService

来源:互联网 发布:怎样在淘宝上买qq小号 编辑:程序博客网 时间:2024/06/16 03:22

flex与java通信的三种方式:

1.通过httpService:你访问一个xml或者servlet,然后flex接收返回的xml数据2.通过webService:你访问一个webService服务,然后获得文本信息3.通过RemoteObject:可以通过blazeds来访问远程service接口方法,Flex接收一个对象。

实例来自:http://bbs.9ria.com/thread-21455-1-1.html


1、首先熟悉一个现成的webservice:


一个天气预报的WebService服务WebService服务来自WebXML,免费,而且查询信息来自国家气象局,地址如下:
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

(关于这个服务详见:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx)

XML结构的WSDL文档的主要结构如下:

(关于该描述文档详见http://www.ibm.com/developerworks/cn/webservices/ws-wsdl/?S_TACT=105AGX52&S_CMP=cn-a-wes)

我们会调用此webservice(在mxml页面中定义一个mx:WebService)的getWeatherbyCityName(使用已定义mx:WebService的getWeatherbyCityName)方法:



2、试着通过浏览器直接调用该webservice提供的服务:

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getWeatherbyCityName

输入武汉得到结果:

This XML file does not appear to have any style information associated with it. The document tree is shown below.<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/"><string>湖北</string><string>武汉</string><string>57494</string><string>57494.jpg</string><string>2014-1-4 21:16:40</string><string>4℃/15℃</string><string>1月5日 晴转多云</string><string>无持续风向微风</string><string>0.gif</string><string>1.gif</string><string>今日天气实况:气温:2℃;风向/风力:北风 0级;湿度:80%;空气质量:暂无;紫外线强度:中等</string><string>穿衣指数:冷,建议着棉衣加羊毛衫等冬季服装。 过敏指数:极不易发,无需担心过敏,可放心外出,享受生活。 运动指数:较适宜,气温较低,在户外运动请注意增减衣物。 洗车指数:较适宜,无雨且风力较小,易保持清洁度。 晾晒指数:基本适宜,天气不错,抓紧时机让衣物晒太阳吧。 旅游指数:适宜,天气较好,可尽情地享受大自然的风光。 路况指数:干燥,天气较好,路面比较干燥,路况较好。 舒适度指数:舒适,白天不冷不热,风力不大。 空气污染指数:暂无。 紫外线指数:中等,涂擦SPF大于15、PA+防晒护肤品。</string><string>4℃/12℃</string><string>1月6日 多云转小雨</string><string>无持续风向微风</string><string>1.gif</string><string>7.gif</string><string>1℃/8℃</string><string>1月7日 小雨</string><string>无持续风向微风</string><string>7.gif</string><string>7.gif</string><string>武汉市位于江汉平原东部,长江中游与长江、汉水交汇处。东经113°41′-115°05′,北纬29°58′-31°22′。武汉市地理位置优越,长江及其最大支流汉江交汇于此,将武汉市区天然分成汉口、汉阳和武昌三镇,武汉是我国水陆交通枢纽,控长江中游之咽喉,扼南北交通之要冲,素有“九省通衢”之称,现全市货运吞吐量达亿吨以上。优越的地理位置,成为历代兵家争夺的战略要地。三国时,武汉东湖附近曾是刘备、孙权、曹操进行军事、政治活动的场所,现在留下的有刘备郊天台、吴王庙、曹操庙、洪山宝塔等古建筑。武汉现已发展为中国中部地区工业、金融、商业、科学、文化教育中心。武汉市属亚热带湿润季风气候,雨量充沛、日照充足,四季分明。总体气候环境良好,近几年30年来,年均降雨量1269毫米,且多集中在6-8月。年均气温15.8℃-17.5℃,年无霜期一般为211天-272天,年日照总时数1810小时-2100小时。景观:武当山、长江三峡、神农架等。</string></ArrayOfString>

3、在flex程序中调用

主要语句:

a、定义:

<mx:WebService id="wsWeather" showBusyCursor="true"    wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"   fault="onFault(event)" result="onResult(event)"/>

b、调用:

wsWeather.getWeatherbyCityName("武汉");


全部代码:

<?xml version="1.0" encoding="utf-8"?><s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"    xmlns:s="library://ns.adobe.com/flex/spark"    xmlns:mx="library://ns.adobe.com/flex/mx"><fx:Script><![CDATA[import mx.controls.Alert;import mx.rpc.events.FaultEvent;import mx.rpc.events.ResultEvent;import mx.collections.ArrayCollection;private function onQuery():void{txtWeatherInfo.text ="";wsWeather.getWeatherbyCityName(CityName.text);}private function onFault(event:FaultEvent):void{Alert.show(event.message.toString(),"Fault");}private function onResult(event:ResultEvent):void{var acWeatherInfo:ArrayCollection = event.result as ArrayCollection;for(var i:uint=0;i<acWeatherInfo.length;i++){txtWeatherInfo.text += acWeatherInfo.getItemAt(i)+"\n";}} ]]></fx:Script><fx:Declarations><!-- 将非可视元素(例如服务、值对象)放在此处 --><mx:WebService id="wsWeather" showBusyCursor="true"    wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"   fault="onFault(event)" result="onResult(event)"/></fx:Declarations><s:VGroup><s:HGroup><s:Label text="城市"/><s:TextInput id="CityName"/><s:Button id="btnQuery" label="查询" click="onQuery()"/></s:HGroup><mx:TextArea editable="false" width="414" height="172" id="txtWeatherInfo"/></s:VGroup></s:WindowedApplication>
完成!


代码:http://pan.baidu.com/share/link?shareid=2181616880&uk=3173173520


------------------------------------------------------------------分割线------------------------------------------------------------------

在使用了blazeds的场合,也可以在proxy-config.xml配置WebService要请求的wsdl地址,在程序中用“destination”映射关系来访问该URL




0 0