Apache flex 是否有可能同时向谷歌和雅虎API发送请求?

Apache flex 是否有可能同时向谷歌和雅虎API发送请求?,apache-flex,api,air,Apache Flex,Api,Air,在我的项目中,我使用了谷歌AdWordsAPI和雅虎API。我想使用flex同时向两个API发送请求 是否可以同时向发送请求。如果不是,我该怎么办?因为flex是基于事件的,所以这应该很简单。只需创建2个URLRequest对象(我假设两个API都是基于REST的),并设置GET变量。为每个URLRequest对象创建loadComplete事件侦听器,并在每个EventListener中编写处理两个API结果的代码 这应该可以做到。因为flex是基于事件的,所以这应该非常简单。只需创建2个UR

在我的项目中,我使用了谷歌AdWordsAPI和雅虎API。我想使用flex同时向两个API发送请求


是否可以同时向发送请求。如果不是,我该怎么办?

因为flex是基于事件的,所以这应该很简单。只需创建2个URLRequest对象(我假设两个API都是基于REST的),并设置GET变量。为每个URLRequest对象创建loadComplete事件侦听器,并在每个EventListener中编写处理两个API结果的代码


这应该可以做到。

因为flex是基于事件的,所以这应该非常简单。只需创建2个URLRequest对象(我假设两个API都是基于REST的),并设置GET变量。为每个URLRequest对象创建loadComplete事件侦听器,并在每个EventListener中编写处理两个API结果的代码

这应该可以做到。

不是“同时”,不是。首先,您只有一个(后台)线程可以使用,并且该线程一次只能执行一件事情,因此无论您如何编写代码,都会首先启动一个请求

如果您要问的是是否可以在一次调用中向这两个服务发送请求,那么答案也是否定的(因为两者都有不同的URL,并且ActionScript API不将数组作为URL参数,它们只接受字符串)

也就是说,我想你可以“假装”,也就是说,让你的Flex应用程序调用你自己编写的服务——例如,用C#——然后让该服务(同步)调用Google,然后调用Yahoo,然后将控制权返回到你的Flex应用程序,以及修改后的结果集,包括从Google和Yahoo返回的结果,分别

除非我误解(或过度思考)了这个问题

下面是一些示例代码,说明了处理调用两个服务的一种方法——不是同时调用,而是一个接一个地调用,使用:


希望有帮助!发回评论,我会留意的。

不是“同时”,不是。首先,你只有一个(后台)线程可以使用,这个线程一次只能做一件事,所以无论你如何编写代码,其中一个请求总是首先被启动

如果您要问的是是否可以在一次调用中向这两个服务发送请求,那么答案也是否定的(因为两者都有不同的URL,并且ActionScript API不将数组作为URL参数,它们只接受字符串)

也就是说,我想你可以“假装”,也就是说,让你的Flex应用程序调用你自己编写的服务——例如,用C#——然后让该服务(同步)调用Google,然后调用Yahoo,然后将控制权返回到你的Flex应用程序,以及修改后的结果集,包括从Google和Yahoo返回的结果,分别

除非我误解(或过度思考)了这个问题

下面是一些示例代码,说明了处理调用两个服务的一种方法——不是同时调用,而是一个接一个地调用,使用:



希望有帮助!回复评论,我会密切关注。

感谢futureelite7对我的回复。答案很好,但若我每次只设置一个eventlistener事件。那么我如何处理这两个api请求对象呢。你能告诉我你在两个URLRequest对象中分别添加了一个eventlistener吗。因此,每个URLRequest对象将向侦听器发送一个事件。如果您愿意,您可以使用相同的处理器。感谢futureelite7对我的回复。答案很好,但若我每次只设置一个eventlistener事件。那么我如何处理这两个api请求对象呢。你能告诉我你在两个URLRequest对象中分别添加了一个eventlistener吗。因此,每个URLRequest对象将向侦听器发送一个事件。如果愿意,可以使用相同的处理程序。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete()">

    <mx:Script>
        <![CDATA[

            import mx.rpc.http.HTTPService;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;

            private function onCreationComplete():void
            {
                callGoogle();
                callYahoo();
            }

            private function callGoogle():void
            {
                var svc:HTTPService = new HTTPService();
                svc.url = "http://api.google.com/someservice.xml";
                svc.addEventListener(ResultEvent.RESULT, onGoogleResult, false, 0, true);
                svc.addEventListener(FaultEvent.FAULT, onGoogleFault, false, 0, true);
                svc.send();
            }

            private function callYahoo():void
            {
                var svc:HTTPService = new HTTPService();
                svc.url = "http://api.yahoo.com/someservice.xml";
                svc.addEventListener(ResultEvent.RESULT, onYahooResult, false, 0, true);
                svc.addEventListener(FaultEvent.FAULT, onYahooFault, false, 0, true);
                svc.send();
            }

            private function onGoogleResult(event:ResultEvent):void
            {
                trace(event.result);
            }

            private function onGoogleFault(event:FaultEvent):void
            {
                trace(event.fault.message);
            }

            private function onYahooResult(event:ResultEvent):void
            {
                trace(event.result);
            }

            private function onYahooFault(event:FaultEvent):void
            {
                trace(event.fault.message);
            }

        ]]>
    </mx:Script>

</mx:Application>