PDA

Просмотр полной версии : Flash режет ответ на запрос


RigidFlasher
26.02.2014, 14:00
Здравствуйте.
Столкнулся вот с такой проблемой. Флэшка отправляет запрос на сервер, а в ответе сервера content_length из заголовка меньше, чем реальная длина ответа. Поэтому ответ обрезается. Можно ли с этим что-нибудь сделать, если код сервера я не могу поправить?
Мой код выглядит так
_urlRequest = new URLRequest(this._url);
_urlRequest.method = URLRequestMethod.GET;
_urlLoader = new URLLoader();
_urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
_urlLoader.addEventListener(Event.COMPLETE, _onLoaded);

private function _onLoaded(event:Event):void
{
// вот тут всё ломается, потому что конец у XML обрезан
this._resultXML = new XML(event.target.data);
}

Isfet
26.02.2014, 14:46
вот так посмотрите, правильно ли приходит ответ, если все нормально, то проблема когда строка преобразуется в xml

private function _onLoaded(event:Event):void
{
trace(event.target.data);
}

RigidFlasher
26.02.2014, 14:50
вот так посмотрите, правильно ли приходит ответ, если все нормально, то проблема когда строка преобразуется в xml

private function _onLoaded(event:Event):void
{
trace(event.target.data);
}
уже смотрел. строка обрезана, поэтому она перестаёт быть валидным XML.

silin
26.02.2014, 14:58
может быть что-то с ограничением на максимальную длину get запроса (https://www.google.ru/search?q=максимальная+длина+get+запроса), плохо понимаю в этой кухне, чтобы сказать конкретнее

RigidFlasher
26.02.2014, 15:02
может быть что-то с ограничением на максимальную длину get запроса (https://www.google.ru/search?q=максимальная+длина+get+запроса), плохо понимаю в этой кухне, чтобы сказать конкретнее
сам запрос достаточно короткий, меньше 255 байт

Gaen
26.02.2014, 16:48
Я бы поснифал запросы, чтобы удостовериться, что сервер отдает корректные данные.

gloomyBrain
26.02.2014, 21:06
Я бы поснифал запросы, чтобы удостовериться, что сервер отдает корректные данные.

По-моему, очевидно , что сервер отдает невалидные данные, ведь content-length не соответствует реальной длине.

Если с сервером ничего сделать нельзя (руки, например, оторвать серверному программисту), то рекомендую попробовать URLStream (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/net/URLStream.html)

RigidFlasher
27.02.2014, 07:10
Я бы поснифал запросы, чтобы удостовериться, что сервер отдает корректные данные.
Да, запросы я снифил. Корректно всё, кроме длины в заголовке.
По-моему, очевидно , что сервер отдает невалидные данные, ведь content-length не соответствует реальной длине.

Если с сервером ничего сделать нельзя (руки, например, оторвать серверному программисту), то рекомендую попробовать URLStream (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/net/URLStream.html)
Посмотрел, но не совсем понял, как им пользоваться в моей ситуации. Судя по всему, там bytesAvalible после окончания загрузки тоже берётся из заголовка.

Isfet
27.02.2014, 11:10
Корректно всё, кроме длины в заголовке.


не могу понять, о каком заголовке идет речь?

всегда просто слал из пхп xml , и никогда не указывал его размер, приходил всегда необрезанным, любого размера, на сервере нет возможности в JSON данные выдавать? В вашем случае не флеш режет ответ на запрос, а сервер.

gloomyBrain
27.02.2014, 13:02
Посмотрел, но не совсем понял, как им пользоваться в моей ситуации. Судя по всему, там bytesAvalible после окончания загрузки тоже берётся из заголовка.

В таком случае остается только выяснить почему сервер отдает заголовок, который не соответствует истине

RigidFlasher
27.02.2014, 13:17
В таком случае остается только выяснить почему сервер отдает заголовок, который не соответствует истине

Ясно, спасибо.

Добавлено через 1 минуту
не могу понять, о каком заголовке идет речь?
Речь идёт о Content-Length из заголовка.

Isfet
27.02.2014, 13:55
мальнько не могу понять проблемы, сервер , к которому нет доступа, и который неправильно выдает данные... Если это не ваш сервер, то как с ним другие люди работают вообще, если он xml неправильно выдает. Или все таки доступ есть, но вы не знаете как исправить?

RigidFlasher
28.02.2014, 07:13
мальнько не могу понять проблемы, сервер , к которому нет доступа, и который неправильно выдает данные... Если это не ваш сервер, то как с ним другие люди работают вообще, если он xml неправильно выдает. Или все таки доступ есть, но вы не знаете как исправить?
Сервер наш, но лично у меня доступа к нему нет. У нас система на AS2, и в ней почему-то всё работает. Я перевожу систему на AS3, и столкнулся вот с такой проблемой.

Isfet
28.02.2014, 07:48
а у вас точно запрос, которые переписали на as3 идентичен запросу на as2? если да, то надо смотреть что вы еще поменяли (версия php на сервере и т.п.), и нюансы работы всех изменений, мне кажется что в любом случае придется в сервер лезть, может просто в as2 загрузчик не смотрит на размер xml, грузит его полностью, а в as3 - смотрит и обрывает загрузку (это только предположения).

RigidFlasher
28.02.2014, 11:54
а у вас точно запрос, которые переписали на as3 идентичен запросу на as2? если да, то надо смотреть что вы еще поменяли (версия php на сервере и т.п.), и нюансы работы всех изменений, мне кажется что в любом случае придется в сервер лезть, может просто в as2 загрузчик не смотрит на размер xml, грузит его полностью, а в as3 - смотрит и обрывает загрузку (это только предположения).
да, запрос полностью идентичен, многократно проверял в сниффере. видимо, придётся ставить задачу на серверного программиста. а хотелось по-быстрому решить эту проблему.

Isfet
28.02.2014, 12:07
хотелось по-быстрому решить эту проблему.

не думаю что там много делов