Java 在AdobeAIR应用程序中创建API调用

Java 在AdobeAIR应用程序中创建API调用,java,actionscript-3,apache-flex,air,flash-builder,Java,Actionscript 3,Apache Flex,Air,Flash Builder,我刚刚开始使用AdobeAIR应用程序。我做了一些hello worlds,对于桌面应用程序来说,AIR似乎很酷。我的下一个目标是通过api连接到我的AdobeAIR桌面应用程序 我想在AdobeAIR应用程序中启动一个restful服务,通过它我将指导air应用程序做什么。 我们如何才能做到这一点?正在进行套接字连接,但似乎存在多线程问题。AdobeAIR应用程序的ServerSocket是否能够处理多个请求 是否有任何选项可以将我的java webapp连接到adobe air应用程序中,并

我刚刚开始使用AdobeAIR应用程序。我做了一些hello worlds,对于桌面应用程序来说,AIR似乎很酷。我的下一个目标是通过api连接到我的AdobeAIR桌面应用程序

我想在AdobeAIR应用程序中启动一个restful服务,通过它我将指导air应用程序做什么。 我们如何才能做到这一点?正在进行套接字连接,但似乎存在多线程问题。AdobeAIR应用程序的ServerSocket是否能够处理多个请求

是否有任何选项可以将我的java webapp连接到adobe air应用程序中,并且它们可以交互

请帮帮我

编辑:

我在网上搜索,发现了类似的东西

就像一个新手一样,让activemq运行,我(webapp)将消息发布到activemq,让我的flex客户机作为消费者接收相应主题的消息,然后按照我的意愿进行操作,这是否很好? 那好吗? 我这里有东西

请更新

谢谢
Arvind是Javascript,因此可以使用
XmlHTTPRequest
发出请求

我已经从旧的生产代码中删除了这个代码,您可能需要在这里或那里更改一行代码。 原始代码如下:


旁注:大约五到六年前,我在AdobeAIR上有过一段糟糕的经历。它速度慢,容易出错,文档记录糟糕,不太灵活,在桌面上运行时感觉“陌生”。看来变化不大。我强烈建议你在谷歌上搜索其他选择,不要轻率地选择

Air是Javascript,因此可以使用
XmlHTTPRequest
发出请求

我已经从旧的生产代码中删除了这个代码,您可能需要在这里或那里更改一行代码。 原始代码如下:


旁注:大约五到六年前,我在AdobeAIR上有过一段糟糕的经历。它速度慢,容易出错,文档记录糟糕,不太灵活,在桌面上运行时感觉“陌生”。看来变化不大。我强烈建议你在谷歌上搜索其他选择,不要轻率地选择

你绝对可以做到这一点。一种选择是如您所说使用
ServerSocket
。另一个选择是简单地将Java web应用程序嵌入AIR包中。有一个例子详细介绍了如何使用Tomcat实现这一点,但基本原理很简单

  • 在AIR项目中嵌入本机Windows/OSX/Linux应用程序
  • 向安装程序函数添加一些代码,以将可执行文件(例如Tomcat+webapp)复制到applicationStorage目录
  • 当您的AIR应用程序运行时,它可以通过HTTP或自定义套接字与您的web应用程序进行通信

  • 你绝对可以做到。一种选择是如您所说使用
    ServerSocket
    。另一个选择是简单地将Java web应用程序嵌入AIR包中。有一个例子详细介绍了如何使用Tomcat实现这一点,但基本原理很简单

  • 在AIR项目中嵌入本机Windows/OSX/Linux应用程序
  • 向安装程序函数添加一些代码,以将可执行文件(例如Tomcat+webapp)复制到applicationStorage目录
  • 当您的AIR应用程序运行时,它可以通过HTTP或自定义套接字与您的web应用程序进行通信

  • 空气不是Javascript。有一种方法可以使用HTML/Javascript或Actionscript构建AIR应用程序,但更典型的方法是Actionscript.AIR允许使用Javascript。actionscript和javascript基本相同。这个问题没有提到actionscript(除了在标签中,不确定在我回答后是否更改了)。该代码已用于生产和工程中。那个么,否决票是怎么回事?这样一个未经教育的回答。@我想提供一些细节吗?AIR不是Javascript。有一种方法可以使用HTML/Javascript或Actionscript构建AIR应用程序,但更典型的方法是Actionscript.AIR允许使用Javascript。actionscript和javascript基本相同。这个问题没有提到actionscript(除了在标签中,不确定在我回答后是否更改了)。该代码已用于生产和工程中。那么,反对票是怎么回事?这样一个没有受过教育的回答。@我想提供一些细节吗?谢谢!我正在复习教程。如果我理解正确的话,这个示例将让tomcat webapp与flex应用程序通信并命令它执行操作。在我的第一个工作中,我想从两个单独的请求中调用两个摄像头。我将完成作业,看看它是否能帮助我,然后将这个好答案标记为已接受:D:)像ActiveMq这样的消息队列?最简单的是,我决定在AIR应用程序中运行计时器,它将调用我的API,并查看是否要执行任何操作。干杯谢谢我正在复习教程。如果我理解正确的话,这个示例将让tomcat webapp与flex应用程序通信并命令它执行操作。在我的第一个工作中,我想从两个单独的请求中调用两个摄像头。我将完成作业,看看它是否能帮助我,然后将这个好答案标记为已接受:D:)像ActiveMq这样的消息队列?最简单的是,我决定在AIR应用程序中运行计时器,它将调用我的API,并查看是否要执行任何操作。干杯
    /**
     * Make a call to a web service
     *
     * @param command The name of the command
     * @param parameters A map of parameters, e.g. { "file": "/myfile.pdf" }
     * @param (optional) callback, a function with one parameter, that will be given a json object when the result is ready.  
     */
    function callWebservice( url, parameters, callback ){
    
        var async = (typeof (callback) == "function");
    
        if( !parameters )
            parameters = {};
    
        var paramString = ""; 
        for( var param in parameters ){
            paramString += encodeURI( param ) + "=" + encodeURI( parameters[param] ) + "&"; 
        }
    
        var req = new XMLHttpRequest();
        req.open( "POST", url, async ); 
    
        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        req.setRequestHeader("Content-length", paramString.length);
        req.setRequestHeader("Connection", "close");
        if( async ){
            req.onreadystatechange = function(){
    
                if( req.readystate == 4 && callback ) {
                    if( req.status == 200 ){
                        callback( JSON.parse( req.responseText ) ); 
                    }
                    else{
                        callback( { "error" : req.responseText } ); 
                    }
                }
            };
            req.send( paramString ); 
        }
        else{
            req.send( paramString ); 
            var ret = JSON.parse( req.responseText );
    
            return ret; 
        }
    }