转移到生产服务器

时间:2011-11-05 18:02:05

标签: flex flex4.5

我有一个在本地主机上运行完美的flex 4.5 php应用程序。当我将它上传到我的远程主机时,当我尝试访问生产版本时,我遇到了一个奇怪的问题:

1. If I am the computer running my localhost, then the production site works.

2. If I am on any other computer then the production site returns the error: "Send failed Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: 'http://localhost/public/gateway.php'"

总而言之,发布版本正在我的localhost机器上查找文件。我做错了什么?

编辑:(如果您在Flash Builder 4中尝试此示例,那么它将起作用。当您尝试在远程服务器上运行发布版本时,问题仅出现在Flash Builder 4.5 for PHP中(您还必须访问)关闭本地主机的远程网站,因为.swf从localhost获取文件)

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
           xmlns:s="library://ns.adobe.com/flex/spark"
           xmlns:mx="library://ns.adobe.com/flex/mx"
           xmlns:testclass="services.testclass.*"
           minWidth="955" minHeight="600">
<fx:Script>
    <![CDATA[
        import mx.controls.Alert;
        import mx.events.FlexEvent;

        protected function getService(event:FlexEvent):void
        {
            label2.text='this function did NOT work';
            testFunctionResult.token = testClass.testFunction();
        }

    ]]>
</fx:Script>
<fx:Declarations>
    <s:CallResponder id="testFunctionResult"/>
    <testclass:TestClass id="testClass"
                         fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)"
                         showBusyCursor="true"/>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:VGroup width="100%" height="100%" x="75">
<s:Spacer height="25"/>
<s:Label fontSize="18" color="Black" text="did this work?"/>
<s:Label id="label2" color="Blue"
         creationComplete="getService(event)" text="{testFunctionResult.lastResult}"/>
</s:VGroup>

</s:Application>




<?php
class TestClass{
public function testFunction(){
    return "this function worked";
}
}
?>

2 个答案:

答案 0 :(得分:2)

看起来您的生产SWF有一些硬编码到localhost URL的远程调用。你必须找到并改变它。

我会查看应用程序所做的所有RemoteObject,WebService和HTTPService调用。如果您使用编译到您的应用程序中的Services-config文件;一定要看那里。

答案 1 :(得分:1)

先生。加加,
我有同样的问题。解决方案是在application / WEB-INF / flex / services-config.xml中设置相对路径。我在此视频中找到了解决方案http://blog.themidnightcoders.com/index.php/2011/07/26/flex-remoting-urls-and-understanding-the-send-failed-error/

“编译器EMBEDS频道,端点和目的地进入SWF”视频告诉。

首先,我的频道定义是这样的:

      <channels>
          <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
              <endpoint url="http://localhost:8080/applicationRoot/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
           </channel-definition>
      </channels>

然后我改为:

      <channels>
          <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
              <endpoint url="/applicationRoot/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
           </channel-definition>
      </channels>

现在我可以从远程机器连接服务器了。