使用flash9(as3)连接webservice
作者:roading 日期:2007-04-09 English
问题已经解决,实现方法请看(flash9/flash cs3(as3)通过soap访问Web Services)
经过测试证明,这种方式一旦ws和flash不在同一机器上就不能调用,但是很多的asp连接ws就是使用这种方式的,估计要使用soap,暂时的方法请看 flash9(as3)访问webservice的暂时替代方法
在flex2中可以使用rpc包来连接webservice,但是rpc包没有提供as代码,被放到rpc.swc里面了,而flash9页没有提供这个类包,所以在flash9中无法直接的使用rpc的一些类来连接webservice.
但是我们可以通过UrlLoader来提交和加载数据,这样我们可以提交变量给webservice来获取webservice返回的xml格式数据.
下面事一个调用webservice的例子:
//--------------------------------------------------------------------------------------------------
//请求的url 格式为:ws url+方法名字
var ws:URLRequest = new URLRequest("http://localhost/test/test.asmx/"+"Hello");
//提交数据格式为post
ws.method = URLRequestMethod.POST;
//提交数据为变量
var variables:URLVariables = new URLVariables();
//test.asmx中Hello方法的参数那么的值
variables.name = "roading";
//
ws.data = variables;
//提交和加载数据
var wsLoader:URLLoader = new URLLoader(ws);
//侦听数据加载完成事件
wsLoader.addEventListener(Event.COMPLETE,xmlLoaded);
//
function xmlLoaded(evtObj:Event)
{
//为返回的xml格式数据定义Namespace
var rss:Namespace = new Namespace("http://roading.net/");
default xml namespace = rss;
//构造xml格式数据
xmldata = new XML(evtObj.target.data);
//下面就可以解析xml数据了...可以自己写解析数据的类...
//...
}
[本日志由 roading 于 2007-07-17 11:47 PM 编辑]
Tags: flash9 as3 webservice
相关日志:
* 想封装as3(flash cs3)的soap(Web Services)调用功能[3222]
* flash9/flash cs3(as3)通过soap访问Web Services[8750]
* 国外as3的3d项目和demo[3683]
* 一个as3的物理引擎---ape[3384]
* Web Services之wsdl[2842]
* flash9/as3访问WebService的暂时替代方法[3990]
Tags: flash9 as3 webservice
相关日志:* 想封装as3(flash cs3)的soap(Web Services)调用功能[3222]
* flash9/flash cs3(as3)通过soap访问Web Services[8750]
* 国外as3的3d项目和demo[3683]
* 一个as3的物理引擎---ape[3384]
* Web Services之wsdl[2842]
* flash9/as3访问WebService的暂时替代方法[3990]
评论: 7 | 查看次数: 5722
- 1
我们打算以后研究一下以后的项目是否用FLEX来开发,上两个项目都是用FLEX建AS项目来做的,FLEX应该比CS3强大吧?
在flex里面有提供rpc包,直接封装了ws的访问功能,但是在flash cs3里面没有提供、、、
还有...
public function load(event:LoadEvent):void
{
trace("loaded");
var op:Operation = event.target.operations[0];
op.send();
op.addEventListener(ResultEvent.RESULT,result);
op.addEventListener(FaultEvent.FAULT,fault);
}
public function load(event:LoadEvent):void
{
trace("loaded");
var op:Operation = event.target.operations[0];
op.send();
op.addEventListener(ResultEvent.RESULT,result);
op.addEventListener(FaultEvent.FAULT,fault);
}
算了,就发关键的两句吧
web.loadWSDL("http://www.flash-mx.com/ws/months.cfc?wsdl");
web.addEventListener(LoadEvent.LOAD,load);
web.loadWSDL("http://www.flash-mx.com/ws/months.cfc?wsdl");
web.addEventListener(LoadEvent.LOAD,load);
在FLEX3中的解决的方法,在AS内定义WebService,请自己更改URI和方法,现在可以获得RESULT但不可以获得Fault,请高手指点.(超过最大字数限制发不了代码......?)
原来是因为浏览器地址栏用的是get方法.这么说来 ws只能用post方法咯
运行出错,注释掉default xml namespace = rss;就正常了,AS3有这语句的么?
在本机访问localhost就行,不过访问动态域名访问就出错,何解
在浏览器地址直接敲入[wsurl]\[webmethod]也是出错,不过我看Test的Invoke代码就是如此啊,更不解.
在本机访问localhost就行,不过访问动态域名访问就出错,何解
在浏览器地址直接敲入[wsurl]\[webmethod]也是出错,不过我看Test的Invoke代码就是如此啊,更不解.
- 1
发表评论
订阅
上一篇
下一篇





