2011-11-05 2 views
1

У меня есть приложение flex 4.5 php, которое отлично работает на localhost. Когда я загрузить его на мой удаленный хост, я наткнулся на странные проблемы, когда я пытаюсь получить доступ к релиз производства:переход на производственный сервер

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 машине. Что я делаю не так?

EDIT: (Если вы пробуете этот пример в Flash Builder 4, то это сработает. Проблема возникает только в Flash Builder 4.5 для PHP при попытке запустить сборку релиза на удаленном сервере (вы также должны доступ к удаленному веб-сайт с локального хоста выключен, так как .swf захватывает файлы с локального хоста)

<?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

похоже, ваш производства SWF имеет некоторый удаленный вызов, который трудно закодированный в LOCALHOST URL. Вы должны будете найти и изменить его.

Я бы посмотрел на все приложения RemoteObject, WebService и HTTPService, которые вызывает приложение. Если вы используете Servic файл es-config, скомпилированный в ваше приложение; обязательно загляните туда.

+0

thx. Это не произошло со мной в Flex 4, только когда я обновил до 4.5. Я не могу найти везде, где localhost жестко запрограммирован. –

+0

Вы используете AMF/RemoteObject? Или HTTPService? Или WebService? – JeffryHouser

+0

php w/ZendFramework –

1

Mr. Gaga,
У меня была та же проблема. Решение устанавливает относительный путь в приложении/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> 

Теперь я могу подключить сервер с удаленных машин.