首页 / 操作系统 / Linux / FLASH与服务器通讯 (JAVA)
1.FLASH 通过URL地址获得服务器数据。
这种方式最为简单,就像在浏览器的地址栏里面敲一样。
先建立一个URLRequest,然后用URLLoader载入就行了。下面这个是载入一个图片,html页面也用同样方法载入。public function Net()
{
var loader:URLLoader;
var request:URLRequest = new URLRequest("http://www.adobe.com/devnet/images/248x148/fldc_samples_3.jpg");
loader = new URLLoader(request);
loader.addEventListener(Event.COMPLETE,completeListener);
} function completeListener(event:Event):void
{
trace( "load completed "+loader.data+" are the data ");
}
?这种方法的缺点显而易见,大量的参数必须写到地址里,数据被暴露而且格式转换麻烦。 2.通过AMF协议来通讯。
AMF协议是ADOBE自己开发的一种建立在HTTP基础上的协议。可以装一个flash mx remoting来实现或者装openAMF来实现,这里只讨论openAMF。先下载一个openAMF,最好带example版本的。然后把openamf.ear放到tomcat的webapps下,启动tomcat,输入
http://localhost:8080/openamf/gateway假如看到空白页,说明openAMF好用了。如何用呢?
amf的通信方式是在服务器端把java的class放到web-inf的class中,然后在flash端直接调用这个class的方法就行了。
比如helloworld这个例子。?package abc;
public class HelloServlet
{ public String hello() { return "this is java server!"; } }
?用javac编译,把生成的class放到openAMF/classes/abc/
FLASH端这样写:?用javac编译,把生成的class放到openAMF/classes/abc/
FLASH端这样写:
?
建立一个netconnection,然后连接那个gateway,用call的方法调用java类的方法,格式是 包名.类名.方法名。至于返回值,用responder来接收,responder在接收到数据时会调用fun函数,把返回值写到fun函数的参数里。?3.socket方式通信
这种方法应该可以和任何语言通信,使用TCP/IP协议。但是,对于FLASH PLAYER 9及其以后的版本,比较麻烦的一点就是安全设置,包括AMF方式在内,假如不设置会出现“安全沙箱”的错误。
FLASH 在连接服务器之前会发一个验证信息:内容如下:
<policy-file-request/>
对应的,你也应该发回一个验证信息,XML格式,一般可以这样写:<cross-domain-policy><allow-access-from domain="*" to-ports="*" /></cross-domain-policy>