Просмотр полной версии : обработки XML сообщения полученного по POST
Сразу к делу.
Мне необходимо обработать xml - сообщение, само сообщение передают постом. Кто отправляет я не знаю.
Просто POST- ом передали мне в скрипт хмл, - я его должет обработать .
Как узнать что пришло сообщение в скрипте, как xml засунуть в переменную для парсинга и т.д.
Вообще не имею представление как сделать.
Помогите кто чем может.
З.Ы.: заранее благодарен
.:EnoT:.
18.02.2009, 23:46
Узнать что пришло сообщение в скрипте...проверить $_POST.
тупо if(!empty($_POST))
А вот по поводу парсинга могу лишь дать ссылки на ф-ции для работы с xml и json (для php), потому что не ясно как тебе нужно обрабатывать полученный код.
http://www.php.su/functions/?cat=xml
http://ru.php.net/manual/ru/ref.json.php
Спс. сча инфу буду смотреть.
Допустим я передаю данные скрипту вот так:
function callServer() {
var obj = document.getElementById('clock');
var req;
// Get the city and state from the Web form
var firstName = "ffff";
var lastName = "aaaaa";
var street = "ggggg";
var city = "33333l";
var state = "ZP";
var zipCode = "565677";
var xmlString = "<profile>" +
" <firstName>" + escape(firstName) + "</firstName>" +
" <lastName>" + escape(lastName) + "</lastName>" +
" <street>" + escape(street) + "</street>" +
" <city>" + escape(city) + "</city>" +
" <state>" + escape(state) + "</state>" +
" <zip-code>" + escape(zipCode) + "</zip-code>" +
"</profile>";
// Построим URL для соединения
var url = "saveAddress.php";
if (window.XMLHttpRequest) req = new XMLHttpRequest();
else if(window.ActiveXObject)
{
try {
req = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e){}
try {
req = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e){}
}
if (req)
{
req.onreadystatechange = function()
{
if (req.readyState == 4 && req.status == 200)
{ obj.innerHTML = req.responseXML; }
};
// Откроем соединение с сервером
req.open("POST", url, true);
// Сообщим серверу, что вы посылаете данные в формате XML
req.setRequestHeader("Content-Type", "text/xml");
// Установим функцию запуска сервера, когда это выполнено
//req.onreadystatechange = confirmUpdate;
// Отправим заказ
req.send(xmlString);
}
else alert("Браузер не поддерживает AJAX");
}
как мне в saveAddress.php обработать хил который я передаю? И вообще как определить что я его передал?
.:EnoT:.
19.02.2009, 02:10
Собственно:
req.send('field=' + xmlString);
а в самом скрипте получаешь:
<?php
if(!empty($_POST['field'])){
//Парсишь
}
?>
а дальше парсишь....опять же не знаю что тебе конкретно нужно парсить....вывести как html или ещё что-то
Енот нафига?
Тс, шли данные напрямую
req.send(xmlString);
А в скрипте:
$xmlData = isset($_POST)?(implode('', $_POST)):(array());
.:EnoT:.
19.02.2009, 03:53
не, так не интересно
мне действительно нужно напрямую передавать, без ключей . Это не я передаю (мне в скрипт некий сервер бросаем хмл, я его должен отпарсить(бла-бла-бла) и ответить ему тоже хмл-сообщение)
тот скрипт я как пример написал. чтобы был понятно чё мне надо :)
что-то таким методом
$xmlData = isset($_POST)implode('', $_POST))array());
не получается поймать XML пакет :( .
Может для этого какой-то сниффер нужен, который будет ловить XML пакеты. А отдельный скрипт будет собирать эти пакеты? или есть другое решение(более простое)?
Помогите, кто чем может.
хе-хе. нашел решение.
$xmlDATA = $GLOBALS["HTTP_RAW_POST_DATA"];
вот и всё. :)
Только в php6 его не будет, пишите свои бажные скрипты, потом засоряйте форум тупыми вопросами почему не работает.
P.S обновил свой пост, скрипт не работал из-за смайлов :) обнови.
groundhog
20.02.2009, 12:22
Это ты с разрабами уже договорился? Глобалсов может и не будет в шестёрке, а предопределённая переменая $HTTP_RAW_POST_DATA будет всегда, ну если, конечно, always_populate_raw_post_data в php.ini включен.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot