Flex调用Webservice有多种方法,可以通过Flex Builder提供的管理Webservices的工具解析WSDL文档生成本地调用类。也可以通过Action Script中Webservice类来实现。还有就是使用<Webservice>组件实现。这次我使用的是最后一种,感觉这种方法较为简洁。
1.构建界面。用于接受用户输入及结果输出。包括:1个Text输入组件,1个按钮组件,10个标签组件
2.添加Webservice组件。根据Web服务提供者的说明,构建Webservice组件。代码如下:
<mx:WebService id="ws" wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"
useProxy="false" showBusyCursor="true">
<mx:operation name="getWeatherbyCityName" result="resultOK()">
<mx:request>
<theCityName>
{city.text.toString()}
</theCityName>
</mx:request>
</mx:operation>
</mx:WebService>
注意:operation组件中的name属性需要和待使用的方法的名字相同。result的属性是在调用方法成功后执行的Action Script 方法。operation还有其他属性,鉴于例子很简单,就不一一使用了。
3.编写Action Script方法。本例中使用了三个方法: resultOK()用于显示结果的,showMessage()用于显示说明,getfocus()用于当输入栏得到焦点时清空输入栏内容的。下面是resultOK()的分析:
public function resultOK():void{ //显示接受的结果
arrayResult=new ArrayCollection();
arrayResult=ws.getWeatherbyCityName.lastResult;
//显示今天的情况
jin1.text=arrayResult[6].toString().substring(0,arrayResult[6].toString().indexOf(" "));
jin2.text=arrayResult[6].toString().substring((arrayResult[6].toString().indexOf(" "))+1);
jin3.text=arrayResult[5];
jin4.text=arrayResult[7];
//显示明天的情况
ming1.text=arrayResult[13].toString().substring(0,arrayResult[13].toString().indexOf(" "));
ming2.text=arrayResult[13].toString().substring((arrayResult[13].toString().indexOf(" "))+1);
ming3.text=arrayResult[12];
ming4.text=arrayResult[14];
//显示后天的情况
hou1.text=arrayResult[18].toString().substring(0,arrayResult[18].toString().indexOf(" "));
hou2.text=arrayResult[18].toString().substring((arrayResult[18].toString().indexOf(" "))+1);
hou3.text=arrayResult[17];
hou4.text=arrayResult[19];
}
在使用Web服务返回的结果时,发现其结果保存在字符数组中的,在WSDL中是ArrayOfString,而Flex没有这种格式,在试过String,Array类型后,发现ArrayCollection类可以使用。然后就是显示结果,可根据WSDL说明来挑选信息。
4.使用按钮调用Webservice组件,发送Web服务信息。即调用ws.getWeatherbyCityName.send()方法。
编译发布swf文件。
求助:在使用swf文件的时候有这样的问题,不晓得怎么把flex导出的swf嵌入Html中。普通的嵌入,不能实现调用Web服务的功能,使用项目生成的文件包中的Html文件倒是可以,但是如果把文件包复制出来,放到另外的地方,又无法使用Web服务了。那位高手能够给予帮助,在下将不胜感激。
完整代码如下
<?xml version="1.0" encoding="gb2312"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="330"
height="155" layout="absolute" fontSize="12" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.collections.ArrayCollection;
public var arrayResult:ArrayCollection; //保存接收到的结果
public function resultOK():void{ //显示接受的结果
arrayResult=new ArrayCollection();
arrayResult=ws.getWeatherbyCityName.lastResult;
//显示今天的情况
jin1.text=arrayResult[6].toString().substring(0,arrayResult[6].toString().indexOf(" "));
jin2.text=arrayResult[6].toString().substring((arrayResult[6].toString().indexOf(" "))+1);
jin3.text=arrayResult[5];
jin4.text=arrayResult[7];
//显示明天的情况
ming1.text=arrayResult[13].toString().substring(0,arrayResult[13].toString().indexOf(" "));
ming2.text=arrayResult[13].toString().substring((arrayResult[13].toString().indexOf(" "))+1);
ming3.text=arrayResult[12];
ming4.text=arrayResult[14];
//显示后天的情况
hou1.text=arrayResult[18].toString().substring(0,arrayResult[18].toString().indexOf(" "));
hou2.text=arrayResult[18].toString().substring((arrayResult[18].toString().indexOf(" "))+1);
hou3.text=arrayResult[17];
hou4.text=arrayResult[19];
}
//显示说明
public function showMessage():void{
var alert:Alert=Alert.show("请输入城市中文名称(国外城市可用英文)。web服务来源于http://www.webxml.com.cn,数据来源于中国气象局" +
",包括340多个中国" +
"主要城市和60多个国外主要城市三日内的天气情况。作者EMAIL:anhulife@gmail.com","说明",Alert.YES);
}
//处理当输入栏获得焦点时,输入栏清空
public function getfocus():void{
city.text="";
}
]]>
</mx:Script>
<mx:WebService id="ws" wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"
useProxy="false" showBusyCursor="true">
<mx:operation name="getWeatherbyCityName" result="resultOK()">
<mx:request>
<theCityName>
{city.text.toString()}
</theCityName>
</mx:request>
</mx:operation>
</mx:WebService>
<mx:TextInput id="city" text="请输入城市名,支持国内外主要城市"
width="200" x="10" y="10" focusIn="getfocus()" fontSize="12" color="#909697"/>
<mx:Button id="check" x="230" y="10" label="查询" click="ws.getWeatherbyCityName.send()"/>
<!--显示结果的Label-->
<mx:Label x="10" y="42" text="" width="90" id="jin1"/>
<mx:Label x="10" y="70" text="" width="90" id="jin2"/>
<mx:Label x="10" y="98" text="" width="90" id="jin3"/>
<mx:Label x="10" y="126" text="" width="90" id="jin4"/>
<mx:Label x="120" y="42" text="" width="90" id="ming1"/>
<mx:Label x="120" y="70" text="" width="90" id="ming2"/>
<mx:Label x="120" y="98" text="" width="90" id="ming3"/>
<mx:Label x="120" y="126" text="" width="90" id="ming4"/>
<mx:Label x="230" y="41" text="" width="90" id="hou1"/>
<mx:Label x="230" y="69" text="" width="90" id="hou2"/>
<mx:Label x="230" y="97" text="" width="90" id="hou3"/>
<mx:Label x="230" y="125" text="" width="90" id="hou4"/>
<!--显示说明的Label-->
<mx:Label x="288" y="12" text="说明" width="32" textDecoration="underline" color="#FAFBFB" click="showMessage()"/>
</mx:Application>
1.构建界面。用于接受用户输入及结果输出。包括:1个Text输入组件,1个按钮组件,10个标签组件
2.添加Webservice组件。根据Web服务提供者的说明,构建Webservice组件。代码如下:
<mx:WebService id="ws" wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"
useProxy="false" showBusyCursor="true">
<mx:operation name="getWeatherbyCityName" result="resultOK()">
<mx:request>
<theCityName>
{city.text.toString()}
</theCityName>
</mx:request>
</mx:operation>
</mx:WebService>
注意:operation组件中的name属性需要和待使用的方法的名字相同。result的属性是在调用方法成功后执行的Action Script 方法。operation还有其他属性,鉴于例子很简单,就不一一使用了。
3.编写Action Script方法。本例中使用了三个方法: resultOK()用于显示结果的,showMessage()用于显示说明,getfocus()用于当输入栏得到焦点时清空输入栏内容的。下面是resultOK()的分析:
public function resultOK():void{ //显示接受的结果
arrayResult=new ArrayCollection();
arrayResult=ws.getWeatherbyCityName.lastResult;
//显示今天的情况
jin1.text=arrayResult[6].toString().substring(0,arrayResult[6].toString().indexOf(" "));
jin2.text=arrayResult[6].toString().substring((arrayResult[6].toString().indexOf(" "))+1);
jin3.text=arrayResult[5];
jin4.text=arrayResult[7];
//显示明天的情况
ming1.text=arrayResult[13].toString().substring(0,arrayResult[13].toString().indexOf(" "));
ming2.text=arrayResult[13].toString().substring((arrayResult[13].toString().indexOf(" "))+1);
ming3.text=arrayResult[12];
ming4.text=arrayResult[14];
//显示后天的情况
hou1.text=arrayResult[18].toString().substring(0,arrayResult[18].toString().indexOf(" "));
hou2.text=arrayResult[18].toString().substring((arrayResult[18].toString().indexOf(" "))+1);
hou3.text=arrayResult[17];
hou4.text=arrayResult[19];
}
在使用Web服务返回的结果时,发现其结果保存在字符数组中的,在WSDL中是ArrayOfString,而Flex没有这种格式,在试过String,Array类型后,发现ArrayCollection类可以使用。然后就是显示结果,可根据WSDL说明来挑选信息。
4.使用按钮调用Webservice组件,发送Web服务信息。即调用ws.getWeatherbyCityName.send()方法。
编译发布swf文件。
求助:在使用swf文件的时候有这样的问题,不晓得怎么把flex导出的swf嵌入Html中。普通的嵌入,不能实现调用Web服务的功能,使用项目生成的文件包中的Html文件倒是可以,但是如果把文件包复制出来,放到另外的地方,又无法使用Web服务了。那位高手能够给予帮助,在下将不胜感激。
完整代码如下
<?xml version="1.0" encoding="gb2312"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="330"
height="155" layout="absolute" fontSize="12" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.collections.ArrayCollection;
public var arrayResult:ArrayCollection; //保存接收到的结果
public function resultOK():void{ //显示接受的结果
arrayResult=new ArrayCollection();
arrayResult=ws.getWeatherbyCityName.lastResult;
//显示今天的情况
jin1.text=arrayResult[6].toString().substring(0,arrayResult[6].toString().indexOf(" "));
jin2.text=arrayResult[6].toString().substring((arrayResult[6].toString().indexOf(" "))+1);
jin3.text=arrayResult[5];
jin4.text=arrayResult[7];
//显示明天的情况
ming1.text=arrayResult[13].toString().substring(0,arrayResult[13].toString().indexOf(" "));
ming2.text=arrayResult[13].toString().substring((arrayResult[13].toString().indexOf(" "))+1);
ming3.text=arrayResult[12];
ming4.text=arrayResult[14];
//显示后天的情况
hou1.text=arrayResult[18].toString().substring(0,arrayResult[18].toString().indexOf(" "));
hou2.text=arrayResult[18].toString().substring((arrayResult[18].toString().indexOf(" "))+1);
hou3.text=arrayResult[17];
hou4.text=arrayResult[19];
}
//显示说明
public function showMessage():void{
var alert:Alert=Alert.show("请输入城市中文名称(国外城市可用英文)。web服务来源于http://www.webxml.com.cn,数据来源于中国气象局" +
",包括340多个中国" +
"主要城市和60多个国外主要城市三日内的天气情况。作者EMAIL:anhulife@gmail.com","说明",Alert.YES);
}
//处理当输入栏获得焦点时,输入栏清空
public function getfocus():void{
city.text="";
}
]]>
</mx:Script>
<mx:WebService id="ws" wsdl="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"
useProxy="false" showBusyCursor="true">
<mx:operation name="getWeatherbyCityName" result="resultOK()">
<mx:request>
<theCityName>
{city.text.toString()}
</theCityName>
</mx:request>
</mx:operation>
</mx:WebService>
<mx:TextInput id="city" text="请输入城市名,支持国内外主要城市"
width="200" x="10" y="10" focusIn="getfocus()" fontSize="12" color="#909697"/>
<mx:Button id="check" x="230" y="10" label="查询" click="ws.getWeatherbyCityName.send()"/>
<!--显示结果的Label-->
<mx:Label x="10" y="42" text="" width="90" id="jin1"/>
<mx:Label x="10" y="70" text="" width="90" id="jin2"/>
<mx:Label x="10" y="98" text="" width="90" id="jin3"/>
<mx:Label x="10" y="126" text="" width="90" id="jin4"/>
<mx:Label x="120" y="42" text="" width="90" id="ming1"/>
<mx:Label x="120" y="70" text="" width="90" id="ming2"/>
<mx:Label x="120" y="98" text="" width="90" id="ming3"/>
<mx:Label x="120" y="126" text="" width="90" id="ming4"/>
<mx:Label x="230" y="41" text="" width="90" id="hou1"/>
<mx:Label x="230" y="69" text="" width="90" id="hou2"/>
<mx:Label x="230" y="97" text="" width="90" id="hou3"/>
<mx:Label x="230" y="125" text="" width="90" id="hou4"/>
<!--显示说明的Label-->
<mx:Label x="288" y="12" text="说明" width="32" textDecoration="underline" color="#FAFBFB" click="showMessage()"/>
</mx:Application>
发表评论
-
Flex 组件的生命周期
2011-09-27 08:00 923Flex 本质 提起 Flex 我们 ... -
浅谈flex 自定义组件
2011-09-27 07:09 734flex组件编写起来很简单 ... -
Flex与JavaScript的交互:调用JavaScipt或者被JavaScript调用
2011-09-26 07:18 734一、在JavaScript中调用Flex方法 在Flex中可以 ... -
flex和java交互的三种方法之二:httpservice
2011-09-26 06:57 1315环境:myeclipse8.5+flex4+blazeds ... -
flex和java交互的三种方法之二:Remote Object
2011-09-26 06:51 1220这个demo也是根据程序从 ...
相关推荐
在本主题中,我们将深入探讨如何使用Flex调用Web服务,尤其是与Java程序的交互。 1. **Flex与Web服务的交互** Flex可以通过SOAP(简单对象访问协议)或AMF(动作消息格式)来调用Web服务。SOAP是一种基于XML的通信...
7. **编写Flex客户端代码**:在Flex MXML或ActionScript代码中,使用RemoteObject或WebService组件来调用Java服务的方法。这些组件可以自动处理AMF的序列化和反序列化过程。 8. **测试交互**:运行Flex应用程序,...
在本文中,我们将深入探讨如何使用Flex 4与Java进行通信,并通过三种不同的方法实现这一目标:RemoteObject、HTTPService和WebService。 1. Flex与普通Java类通信:RemoteObject RemoteObject是Flex中用于与远程...
本教程将深入探讨Flex与Java的三种交互方式,帮助开发者更好地理解和实现跨平台的Web应用。 1. AMF(Action Message Format)交互: AMF是Adobe提供的二进制数据格式,它能高效地传输对象,特别适合于Flex和Java...
Flex和Java之间的交互是开发富互联网应用程序(RIA)时常用的一种技术组合,它允许前端的Flex界面与后端的Java服务器进行数据交换和业务逻辑处理。这个“flex+java交互简单实用易懂”的示例旨在提供一个清晰的教程,...
4. **Flex与Java交互**:Flex应用可以通过HTTPService、WebService、Remoting等方法与Java后台进行数据交互。AMF通道是Flex与Java集成的常用方式,因为AMF可以大大减少网络传输的数据量和提高性能。在Java端,可以...
在本文中,我们将深入探讨如何使用Flex调用WebService来访问MSSQL数据库。Flex是一种用于构建富互联网应用程序(RIA)的开发框架,它允许开发者创建交互性强、用户体验丰富的Web应用。而WebService则是一种通过网络...
2. **Java基础**:Java后端通常采用Servlet、Spring MVC或Struts等框架处理HTTP请求,提供RESTful API供Flex调用。Java的优势在于其稳定性和跨平台性,适合处理复杂的业务逻辑。 3. **通信协议**:Flex与Java交互...
在本文中,我们将探讨如何在Flex 4环境中与Java进行交互,主要涉及三种通信方式:RemoteObject、HTTPService以及WebService。这些交互方式允许Flex客户端与后端Java应用进行数据交换,从而实现丰富的用户界面和强大...
在本文中,我们将深入探讨如何使用Adobe Flex调用Web Service来开发一个天气预报服务。Flex是一种基于MXML和ActionScript的开源框架,用于构建富互联网应用程序(RIA)。它允许开发者创建交互性强、用户体验良好的...
总结来说,Flex与Java的交互可以通过RemoteObject、HTTPService和WebService三种方式实现。理解这些通信机制有助于构建健壮的Flex应用,同时注意数据安全,以防止潜在的安全威胁。在实际开发中,开发者应根据项目...
在本文中,我们将深入探讨Flex 4与Java交互的三种主要方式:通过RemoteObject与普通Java类通信、使用HTTPService与服务器交互以及通过WebService与Web服务通信。这些技术在开发富互联网应用程序(RIA)时,允许前端...
4. WebService:Java可以通过SOAP或RESTful WebService提供API,Flex客户端可以调用这些服务获取或更新数据。这种方式灵活且易于扩展,适用于跨平台的分布式系统。 在实际开发中,Java负责处理业务逻辑、数据存储和...
- Flex客户端调用:在Flex中使用HTTPService或WebService组件,配置URL和方法名,调用Java服务。 2. SOAP通信: - Java Web Service:使用JAX-WS或Apache CXF等库创建符合SOAP规范的Web服务。 - WSDL:编写WSDL...
Flex调用WebService例子是一个典型的跨平台通信场景,它结合了Adobe Flex前端开发框架与XFire作为后台的Web服务实现。Flex是一种基于ActionScript和MXML的开放源代码框架,用于构建富互联网应用程序(RIA),而...
这个代理类可以通过Flex的WebService或RemoteObject组件自动生成,通过指定服务的URL和方法名来完成。 5. **调用Java服务**:在Flex应用中,你可以像调用本地方法一样调用远程的Java服务。服务调用的结果会自动转换...
本文将深入探讨Flex与后台交互的三种主要方法:HTTPService、WebService和URLLoader,并重点关注基于WebService的交互方式。 一、HTTPService HTTPService是Flex中用于与HTTP服务器进行数据交换的主要组件。它基于...
"Ch06"这个文件名可能代表第六章或第六部分,可能包含了关于Flex4与Java交互的深入讲解,涵盖了如何配置BlazeDS,创建Flex客户端服务调用,处理服务器返回的数据,以及可能出现的问题和解决方案等。 总结,Flex4与...
在Flex项目中,我们可以使用RemoteObject或WebService组件来调用Java服务,而这些调用会被转换成AMF消息发送到BlazeDS。 5. 文件结构: - `flexDemo`:包含了Flex项目的源代码,包括MXML和ActionScript文件。MXML...