переход на производственный сервер - PullRequest
1 голос
/ 05 ноября 2011

У меня есть приложение 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'"

В итоге сборка релиза ищет файлы на моем локальном компьютере. Что я делаю не так?

РЕДАКТИРОВАТЬ: (Если вы пробуете этот пример в 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 ]

2 голосов
/ 05 ноября 2011

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

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

1 голос
/ 17 января 2013

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

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

...