不可能使用AS3连接到Java服务器
-
24-10-2019 - |
题
我在AS3中的XMLSocket脚本遇到了麻烦。我有一个Java服务器,我正在尝试发送XML数据,但是服务器没有收到任何内容。最令人惊讶的是,一个月前我的脚本运作良好,现在我的ioError侦听器返回了我:
“错误#2031:套接字错误。url:client_fla :: baster_fla ::维护emainimeline/frame1()”的test()at test()
和我的SecurityError听众:
“错误#2048:安全沙盒违规:file:/// c | /documents%20and%20settings/zeph/bureau/client.swf无法从127.0.0.0.1:18000。 frame1()”
我试图更改IP,尝试在另一台计算机上,尝试拉出我的脚本的以前版本,该脚本没有变化,没有结果。
我只是不明白为什么它停止这样做。这是我的脚本:
package
{
import flash.net.XMLSocket;
import flash.events.*;
import flash.display.MovieClip;
public class test extends MovieClip
{
public function test()
{
trace("pouet");
var xmlsock:XMLSocket = new XMLSocket();
xmlsock.connect("127.0.0.1", 18000);
var xmlFormattedData = new XML('<message pseudo="Nix" value="Coucou !"/>');
xmlsock.send(xmlFormattedData);
xmlsock.addEventListener(DataEvent.DATA, onData);
xmlsock.addEventListener(IOErrorEvent.IO_ERROR, ioerror);
xmlsock.addEventListener(SecurityErrorEvent.SECURITY_ERROR, secuerror);
xmlsock.send(xmlFormattedData);
}
private function onData(event:DataEvent):void
{
trace("[" + event.type + "] " + event.data);
}
private function ioerror(event:IOErrorEvent):void
{
trace(event);
}
private function secuerror(event:SecurityErrorEvent):void
{
trace(event);
}
}
}
我对此感到生气,有人有想法吗?
谢谢阅读!
解决方案
错误表明,您正在从本地文件系统运行Flash应用程序,并且此应用程序希望提出网络请求(对Java服务器)。
默认情况下不允许这样做。您可以做两件事之一:
在Flash Player中更新您的全局安全设置(右键单击,高级设置,全局安全设置,然后设置Flash文件或允许进行网络请求的整个文件夹)
从Web服务器运行Flash应用程序(并确保在Java服务器上有CrossDomain.xml)。
其他提示
正如您的错误所指示的那样,您正在遇到违反沙箱安全性。这意味着Flash不允许使用其自身以外的应用程序域的资产。基本上有两个修复程序,一个比另一个更简单:
阅读如何创建和加载 跨域XML. 。这只是您正在运行的Flash应用程序读取的服务器上的“策略”。正确设置可能很棘手,但这是普遍接受的路线。
在输出设置上,在“本地播放安全性”下,您可以检查“访问网络文件”,而不是“仅访问本地文件”,然后快速解决问题。
希望有帮助!