Просмотр полной версии : Кто-то вообще пользуется методами XML sendAndLoad и прочими ... ?
Суть в том что посылка ХМЛ документа идёт в "неправильном" формате, т.е. проблема в следующем если при создании документа ХМЛ я использую кавычки, то я должен указать не ", а /", а флэш должен хранить её как один символ, но при посылки с использованием метода send либо sendAndLoad приёмник получает ХМЛ с содержащий два символа, т.е. /" из-за этого возникают проблемы с его разбором.
Уважаемые, я во флэше новичёк, расскажите кто как решал проблему обмна данными в формате XML.
вопрос первый-
пользуются все кому дорого его время, посылать данные не через ХМЛ - утомительно.
вопрос второй
во первых не /", а \" ,
но в принципе такая ошибка ничего не должна сделать страшного, ведь все равно строка превратится в ХМЛ-объект и такая конструкция будет игнорирована при парсинге:
var t = '<test bad_attr=/"s/"/>'
var x = new XML(t)
trace(x)
Сначала создатеся ХМЛ объект (парсинг) а серверу послылается текстовое представление объекта ХМЛ, вызывается метод toString() объекта ХМЛ
Пример.
var t = '<test bad_attr=/"s/"/ normal_attr=\"value\">'
var x = new XML(t)
x.sendAndLoad(any_url, x);
trace(x)
серверу дойдет пустая строка, без /" , так как была ошибка парсинга.
задавая вопрос я имел ввиду это самое \", т.к. по другому оно вообще работать не будет, суть в том что метод sendAndLoad посылает web-сервису запрос с этими самыми символами \", в результате чего он некорректно парсится (проверял это по логам вэб сервиса !)
вот пример кода создания XML
--
var myXML = new XML("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/1999/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\">\n<SOAP-ENV:Body>\n<CJournal_hardware:getList xmlns:ns1=\"urn:xmethods-GetList\" SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n<From xsi:type=\"xsd:string\">\n 01.01.2003 \n</From>\n<To xsi:type=\"xsd:string\">\n 01.01.2005 \n</To>\n</CJournal_hardware:getList>\n</SOAP-ENV:Body>\n</SOAP-ENV:Envelope>");
--
Кстати заметил ещё одну особенность, если я загружаю в ХМЛ содержимое файла, а потом его посылаю, то он вообще посылается используя метод GET !!!
--
Всегда делаю поправку на кривость своих рук, но выполняю всё "по документации" и не получаю желаемого результата, можете ли вы привести пример своего кода где используете подобную конструкцию ?
подход и формат хмл совершенно правильный
думаю что проблема в получении данных сервером,
а потом его посылаю, то он вообще посылается используя метод GET !!!
совершенно нет никакой связи между тем как получен файл... посылается просто текст.
GET может быть если закачаивается методом load....
встречался с глюком, когда возникали проблемы, если ХЛМ содержит переносы... Но не могу отвечать, слышал мельком... может проблема была в другом.
это критично - переносы в хмл?
если нет, то лучше выставить игнорировать пробелы и переносы:
XML.prototype.ignoreWhite = true;
вообще в приёме я уверен на 99%, кроме того если он получает непроинтерпритированные сочетания символов \" то это явно ошибка клиента, отправившего данные !
совершенно нет никакой связи между тем как получен файл... посылается просто текст.
да я это костным мозгом понимаю , но на практике получается глупость ...
--
К слову использую FlashMX
не может быть такой ошибки,
проверено сотни раз...
явно ошибка парсера на сервере,
а ошибка ли? может все ок?
если испльзуется метод ХМЛ toSting по умолчанию (не заменен на собственный) то не может быть такой ошибки
Вообще я и предположить не мог, что кто-то подумает о том, что Web-сервис реализован на флэше, ведь это не согласуется с концепцией сервиса !
Код флэша выполняется на клиентской машине (или я ошибаюсь ?)
Сервис у меня реализован на PHP, но неужели метод sendAndLoad направлен только на Flash приложения ?
Тогда как решаются задачи по обмену данными в формате ХМЛ с приложениями сторонних производителей ?
Я говорил и говорю о клиенте,
и утверждаю что на клиенте проблемы нет,
проблема в парсинге на сервере.
думаю тема исчерпана.
нужно искать ошибку в серверной части, что какие данные получает сервер, что используется как парсер и тд и тп.
спроси в разделе о ПХП, возможно что кто-то сталкивался с подобными проблемами.
Ок, большое спасибо за внимание !
Но до сих пор продолжаю быть уверенным что на сервере всё впорядке, т.к. в начале получая записывая в лог все $HTTP_POST_VARS, и $GLOBALS["HTTP_RAW_POST_DATA"] я вижу что там ХМЛ в "неправильном" формате.
Если Вы пишете книгу и у вас найдётся немного свободного времени я могу предостваить примеры кода который приводит к тому что sendAndLoad запрашивает данные используя метод GET, а не POST как однозначно сказанно в документации.
Однако не исключаю возможности что он будет содержать ошибки (повторяю я во флэше новичёк).
--
С Уважением
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.