2013-05-30 5 views
1

Я пытающийся отправить запрос POST с данными в другой домен с этим кодом:AS3 URLRequest POST Работает только при Составитель в HTML Wrapper

_snapshot_id = 1369022400; 
var urlRequest:URLRequest = new URLRequest("https://fuzzykittens/radar"); 
urlRequest.method = URLRequestMethod.POST; 
urlRequest.contentType = "application/x-www-form-urlencoded"; 

//set variables for post 
var postVars:URLVariables = new URLVariables(); 
postVars.snapshot = String(_snapshot_id); 
urlRequest.data = postVars; 

//initialize weather proccess request 
weatherProcRequest = new URLLoader(urlRequest); 

weatherProcRequest.addEventListener(Event.COMPLETE, 
    weatherProcRequest_CompleteHandler); 
weatherProcRequest.addEventListener(IOErrorEvent.IO_ERROR, 
    weatherProcRequest_ErrorHandler); 
weatherProcRequest.addEventListener(SecurityErrorEvent.SECURITY_ERROR, 
    weatherProcRequest_ErrorHandler); 

weatherProcRequest.load(urlRequest); 

Когда я установил гибкий компилятор использовать HTML-оболочку, запрос работает. Когда я не использую оболочку, запрос выдает ошибку io # 2032. Я думаю, что это не отправка идентификатора моментального снимка, но я не знаю, почему.

Есть ли очевидная причина, по которой запрос отправляет данные при отладке в оболочке html и не может это сделать при отладке вне оболочки html?

fuzzykittens имеет crossdomain.xml с

<allow-access-from domain="*" secure="false"/> 
+1

Более конкретно о вашей среде, вероятно, поможет (используете ли вы AIR для настольного или мобильного приложения или вы просто пытаетесь выполнить SWF самостоятельно, и если да, то почему?) Существуют различные ограничения безопасности в зависимости от контекста выполнения SWF. – shaunhusain

+0

Я запускаю SWF самостоятельно. Решение сделать это не было моим собственным, поэтому я не знаю, почему. Когда я использую HTML-оболочку, она открывается в firefox. Спасибо, это мой первый вопрос переполнения стека. – user2437252

+1

Это может быть когда вы используете URLRequestMethod.POST без оболочки, попробуйте его с помощью URLRequestMethod.GET для тестирования. Вы также можете прослушивать HTTPStatusEvent.HTTP_STATUS и HTTPStatusEvent.HTTP_RESPONSE_STATUS на URLLoader, чтобы увидеть возвращаемый статус – michaPau

ответ

1

я нашел проблему. Adobe очень кратко упоминает об этом предостережение в livedoc URLRequest в:

Примечание: При работе в Flash Player указанная форма не имеет тела, проигрыватель автоматически использует операцию GET, даже если для метода установлено значение URLRequestMethod.POST. По этой причине рекомендуется всегда включать «фиктивный» орган, чтобы убедиться, что используется правильный метод.

Когда я только что запустил SWF без тела, идентификатор моментального снимка не был отправлен как post var, поэтому сервер ответил иначе.

Это определенно не тот ответ, который я хотел, но мне приятно знать, что происходит. Спасибо за ваши Коментарии.