使用flash9(as3)连接webservice


问题已经解决,实现方法请看(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数据了...可以自己写解析数据的类...
 //...
}

评论: 7 | 查看次数: 5722
  • 1
大笑 [2008-05-12 08:30 PM]
我们打算以后研究一下以后的项目是否用FLEX来开发,上两个项目都是用FLEX建AS项目来做的,FLEX应该比CS3强大吧?
roading [2008-05-12 01:28 PM]
在flex里面有提供rpc包,直接封装了ws的访问功能,但是在flash cs3里面没有提供、、、
大笑 [2008-05-12 11:34 AM]
还有...
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); 
}
大笑 [2008-05-12 11:31 AM]
算了,就发关键的两句吧
web.loadWSDL("http://www.flash-mx.com/ws/months.cfc?wsdl");
web.addEventListener(LoadEvent.LOAD,load);
大笑 [2008-05-12 11:29 AM]
在FLEX3中的解决的方法,在AS内定义WebService,请自己更改URI和方法,现在可以获得RESULT但不可以获得Fault,请高手指点.(超过最大字数限制发不了代码......?)
neutra [2007-04-14 04:37 PM]
原来是因为浏览器地址栏用的是get方法.这么说来 ws只能用post方法咯
neutra [2007-04-14 03:50 PM]
运行出错,注释掉default xml namespace = rss;就正常了,AS3有这语句的么?
在本机访问localhost就行,不过访问动态域名访问就出错,何解
在浏览器地址直接敲入[wsurl]\[webmethod]也是出错,不过我看Test的Invoke代码就是如此啊,更不解.
  • 1
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: =1+5
内 容:
  • 粗体
  • 斜体
  • 下划线
  • 插入引用
  • 表情符号
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 300 字 | UBB代码 关闭 | [img]标签 关闭