Вход

Просмотр полной версии : Кто-то вообще пользуется методами XML sendAndLoad и прочими ... ?


Yurk
29.01.2003, 12:43
Суть в том что посылка ХМЛ документа идёт в "неправильном" формате, т.е. проблема в следующем если при создании документа ХМЛ я использую кавычки, то я должен указать не ", а /", а флэш должен хранить её как один символ, но при посылки с использованием метода send либо sendAndLoad приёмник получает ХМЛ с содержащий два символа, т.е. /" из-за этого возникают проблемы с его разбором.
Уважаемые, я во флэше новичёк, расскажите кто как решал проблему обмна данными в формате XML.

john
29.01.2003, 14:23
вопрос первый-

пользуются все кому дорого его время, посылать данные не через ХМЛ - утомительно.

вопрос второй

во первых не /", а \" ,
но в принципе такая ошибка ничего не должна сделать страшного, ведь все равно строка превратится в ХМЛ-объект и такая конструкция будет игнорирована при парсинге:


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)


серверу дойдет пустая строка, без /" , так как была ошибка парсинга.

Yurk
29.01.2003, 17:44
задавая вопрос я имел ввиду это самое \", т.к. по другому оно вообще работать не будет, суть в том что метод 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 !!!
--
Всегда делаю поправку на кривость своих рук, но выполняю всё "по документации" и не получаю желаемого результата, можете ли вы привести пример своего кода где используете подобную конструкцию ?

john
29.01.2003, 18:16
подход и формат хмл совершенно правильный
думаю что проблема в получении данных сервером,

а потом его посылаю, то он вообще посылается используя метод GET !!!

совершенно нет никакой связи между тем как получен файл... посылается просто текст.

GET может быть если закачаивается методом load....

встречался с глюком, когда возникали проблемы, если ХЛМ содержит переносы... Но не могу отвечать, слышал мельком... может проблема была в другом.

это критично - переносы в хмл?

если нет, то лучше выставить игнорировать пробелы и переносы:

XML.prototype.ignoreWhite = true;

Yurk
29.01.2003, 18:29
вообще в приёме я уверен на 99%, кроме того если он получает непроинтерпритированные сочетания символов \" то это явно ошибка клиента, отправившего данные !

совершенно нет никакой связи между тем как получен файл... посылается просто текст.
да я это костным мозгом понимаю , но на практике получается глупость ...
--
К слову использую FlashMX

john
29.01.2003, 18:49
не может быть такой ошибки,
проверено сотни раз...

явно ошибка парсера на сервере,
а ошибка ли? может все ок?

если испльзуется метод ХМЛ toSting по умолчанию (не заменен на собственный) то не может быть такой ошибки

Yurk
29.01.2003, 19:02
Вообще я и предположить не мог, что кто-то подумает о том, что Web-сервис реализован на флэше, ведь это не согласуется с концепцией сервиса !
Код флэша выполняется на клиентской машине (или я ошибаюсь ?)
Сервис у меня реализован на PHP, но неужели метод sendAndLoad направлен только на Flash приложения ?
Тогда как решаются задачи по обмену данными в формате ХМЛ с приложениями сторонних производителей ?

john
29.01.2003, 20:04
Я говорил и говорю о клиенте,
и утверждаю что на клиенте проблемы нет,

проблема в парсинге на сервере.

думаю тема исчерпана.

нужно искать ошибку в серверной части, что какие данные получает сервер, что используется как парсер и тд и тп.

спроси в разделе о ПХП, возможно что кто-то сталкивался с подобными проблемами.

Yurk
29.01.2003, 20:26
Ок, большое спасибо за внимание !
Но до сих пор продолжаю быть уверенным что на сервере всё впорядке, т.к. в начале получая записывая в лог все $HTTP_POST_VARS, и $GLOBALS["HTTP_RAW_POST_DATA"] я вижу что там ХМЛ в "неправильном" формате.
Если Вы пишете книгу и у вас найдётся немного свободного времени я могу предостваить примеры кода который приводит к тому что sendAndLoad запрашивает данные используя метод GET, а не POST как однозначно сказанно в документации.
Однако не исключаю возможности что он будет содержать ошибки (повторяю я во флэше новичёк).
--
С Уважением