PDA

Просмотр полной версии : XML.send()


BigIlya
17.10.2001, 18:44
Люди, помогите глупому чайнику!

Как работает функция XML.send(URL), что она посылает по этому самому URL. И еще если можете дайте самый простенький примерчик (или ссылку) Как посредством этой функции связать Flash и серверный скрипт (язык безразличен, попробую понять).

PS: Просьба не издеваться. :)

whiteagle
17.10.2001, 20:44
посылает твой объект. на сервере ты этот объект обрабатываешь как и любое другое что пришло, ты ведь когда из формы что-либо постишь скрипту знаешь как это обрабатывать. или нет ? :)
вообщем получаешь объект, парсишь его ну и все нормально.

BigIlya
18.10.2001, 10:40
Ладно, покажу как я это делал, подскажите, в чем я неправ:

1) На кнопку в Flash вешаю следующий код:
loginXML = new XML();
loginElement = loginXML.createElement("LOGIN");
//username и password имена текстовых полей
loginElement.attributes.username = username;
loginElement.attributes.password = password;
loginXML.appendChild(loginElement);
loginXML.send("http://localhost/php/test.php");

2) Вот пример соответсвующего PHP скрипта (в нем я пытаюсь посмотреть все переменные переданные скрипту или методом POST или методом GET, и вывожу эти переменные в файл test_out.txt):
<?
$file = fopen('test_out.txt', 'w');

$k=@array_keys($HTTP_POST_VARS);
fputs($file, 'HTTP_POST_VARS'. "\n");
for($i=0; $i<count($k); $i++) {
fputs($file, $k[$i] . ' => ' . $HTTP_POST_VARS[$k[$i]]);
}

$k=@array_keys($HTTP_GET_VARS);
fputs($file, 'HTTP_GET_VARS');
for($i=0; $i<count($k); $i++) {
fputs($file, $k[$i] . ' => ' . $HTTP_GET_VARS[$k[$i]]);
}
fclose($file);

?>

Ну пусто в файле :(( Что же тогда Flash передает, где объект то? Кстати отвечать я Flash'у научился , а вот принять от него что-либо пока не могу, а жаль...

BigIlya
18.10.2001, 17:58
Персонально Белому Орлу, просьба. Пожалуйста нарисуй хоть какой нибудь скрипт, который мог бы проанализировать вышеуказанные переменные user и password (переданные как атрибуты элемента LOGIN (см. выше). Пожалуйста! А то всю голову изломал, уже побывал даже www.actionscript.com :(

whiteagle
18.10.2001, 18:20
сейчас под рукой у меня нет рабочего примера. все предельно просто:
у тебя есть хмл объект. у него есть имя. когда ты говоришь myXML.send(url); POST'oм идет строка myXML, но по формату это именно СТРОКА. это все равно что myXML='tralala';
В скрипте (на сервере) создаешь новый ХМЛ-объект. Как именно зависит от скрипта (ASP, JSP, CGI, PHP) , у них у всех различные парсеры, поэтому и методы создания различны. В методах объекта есть метод "загрузить". В качестве аргумента ты можешь поставить или имя файла (урл *.хмл) или хмл-строку. Вот нашу строку туда и вставляешь.

BigIlya
19.10.2001, 12:41
Ну во первых, большое спасибо whiteagl'у (пример конечно не привел), но навел на мрачные размышления ;) . А причина была в следующем: Вместо Publish Preview -> HTML я тестировал сцену сразу Control -> Test Movie. А в этом случае POST' ом ничего не передается. Ну а собственно строку я извлек следующим способом (в Perl):

open(F, ">xml_str.txt");
@params = $query->param();
$xml_str = "$params[0]=" . $query->param($params[0]);
print F $xml_str;
close(F);

Может, кто знает другой способ?

BigIlya
22.10.2001, 11:00
На Perl:

print "Content-type text/html\n\n";
sysread(STDIN, $xml, $ENV{'CONTENT_LENGTH'});
# теперь в $xml то что нам надо

И ничего более....