Ошибка HTTP xml запроса Flex Ruby-on-Rails - PullRequest
0 голосов
/ 05 января 2011

В настоящее время я разрабатываю приложение Ruby on Rails с Rails 3.0 на Ubuntu 10.4.Я намерен использовать Adobe Flex для внешнего интерфейса.По этой причине я установил Flash Builder 4 в Windows XP, используя Virtual Box.Интернет-соединение этой виртуальной машины является мостовым.

Приложение Flex в настоящее время состоит только из простого HTTP-запроса, который извлекает файл XML из приложения Rails, работающего на локальном хосте Ubuntu: 3000:

<?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" minWidth="955" minHeight="600"
      creationComplete="plansService.send()">
 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
  <s:HTTPService id="plansService"
        url="http://192.168.1.102:3000/plans/list" />
 </fx:Declarations>
 <fx:Script>
  <![CDATA[
   private function printPlans():void {
    for each (var xm:XML in plansService.lastResult.plans.plan) {
     trace("my name is "+ xm.child("name"));
    }

   }
  ]]>

 </fx:Script>
</s:Application>

В диспетчере сети Flash Builder HTTP-запрос отображается как работающий.Ответ есть и содержит правильные данные XML.Но когда приложение Flex загружается в браузер, я получаю эту ошибку:

Error #2044: Unhandled securityError:. text=Error #2048: Security sandbox violation: file://C:\Documents and Settings\susi\Adobe Flash Builder 4\naturalstudy\bin-debug\naturalstudy.swf cannot load data from localhost:27813.
 at mx.netmon::NetworkMonitorImpl()[/ndepot/fb_401/ide_builder/ActionscriptProjects/src/mx/netmon/NetworkMonitorImpl.as:81]
 at mx.netmon::NetworkMonitorImpl$/init()[/ndepot/fb_401/ide_builder/ActionscriptProjects/src/mx/netmon/NetworkMonitorImpl.as:49]
 at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::kickOff()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\SystemManager.as:2620]
 at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::preloader_completeHandler()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\SystemManager.as:2539]
 at flash.events::EventDispatcher/dispatchEventFunction()
 at flash.events::EventDispatcher/dispatchEvent()
 at mx.preloaders::Preloader/timerHandler()[E:\dev\4.x\frameworks\projects\framework\src\mx\preloaders\Preloader.as:515]
 at flash.utils::Timer/_timerDispatch()
 at flash.utils::Timer/tick()

Я прогуглил это и, таким образом, попробовал следующее:- добавлен use-network = false в опции компилятора Flash Builder для этого проекта- добавил файл crossdomain.xml в общую папку проекта Rails:

   <?xml version="1.0" encoding="utf-8"?>
    <cross-domain-policy>
    <site-control permitted-cross-domain-policies="all" />
    <allow-access-from domain="*" />
    <allow-http-request-headers-from domain="*" headers="*"/>
    </cross-domain-policy>

Но он все равно не работает и ошибка та же.Я думаю, проблема в том, что приложение Flex пытается получить что-то от localhost: 27813 ... но я застрял на этом этапе.Помощь будет высоко ценится!

1 Ответ

1 голос
/ 05 января 2011

выстрел в темноте.Перейдите сюда и добавьте это местоположение (localhost: 27813) в качестве надежного:

http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html

Дополнительные предположения:

  • Запустите проект с помощью сетевого монитора Flash Builderотключено.
  • Экспортируйте сборку релиза и запустите
...