2013-02-26 79 views
1

如您所知,从Flash应用程序发送自定义HTTP请求始终是一件困难的事情。例如,如果您有基本身份验证受保护的Web服务,您将无法使用GET请求从Flash请求它,因为只有POST请求可以具有自定义标头。这真的很麻烦。使用ExternalInterface发送HTTP请求

我想知道有没有人尝试使用ExternalInterface发送使用Javascript的HTTP请求?这个想法是要求JS方法发送请求并将数据传回给Flash。

有什么想法?

回答

3

是的,这是可能的,我已经做了几次使用Facebook的JS SDK,并传回数据到我的瑞士法郎。

ExternalInterface.call("getFriends",params); 

在JS方面:

通常你从你的SWF调用JS功能

function getFriends(params) 
{ 
    FB.api('me/friends',function(response){ 
     mySwf.onGetFriendsComplete(response); 
    }); 
} 

在SWF侧接收来自JS调用:

ExternalInterface.addCallback("onGetFriendsComplete",onGetFriendsComplete); 

private function onGetFriendsComplete(data) 
{ 
    trace(data); 
} 

如果您在本地运行SWF,则可能需要在ExternalInterface调用之前进行检查以确保它可用:

if(ExternalInterface.available) 
    ExternalInterface.call(...); 
+0

太棒了!非常感谢你。 – htulipe 2013-02-27 09:23:54

+0

尽管这里有一个安全问题。当调用mySwf.onGetFriendsComplete(响应);我的Chrome向我发送了“未捕获错误:SECURITY_ERR:DOM异常18”和“未捕获错误:NPObject上的错误调用方法”。 – htulipe 2013-02-27 11:07:38

+0

http://stackoverflow.com/questions/1418528/javascript-flash-throwing-error-calling-method-on-npobject 你可能想安装Flash播放器的调试版本,并在Firefox中测试也看到什么继续。 mySwf应该是由嵌入返回的对象。 – 2013-02-27 15:38:07