Как получить xml-запросы и отправить ответ xml в php?
Итак, мне нужно создать приложение, которое получит запрос xml, и на основе этого мне нужно будет вернуть ответ xml. Я знаю, как отправлять запросы и получать ответ, но я никогда не делал этого по-другому. Я бы послал запрос так:
private function sendRequest($requestXML)
{
$server = 'http://www.something.com/myapp';
$headers = array(
"Content-type: text/xml"
,"Content-length: ".strlen($requestXML)
,"Connection: close"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $server);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$data = curl_exec($ch);
if(curl_errno($ch)){
print curl_error($ch);
echo " something went wrong..... try later";
}else{
curl_close($ch);
}
return $data;
}
Мой вопрос: какой будет код на принимающей стороне? Как поймать входящий запрос?
Спасибо.
Ответы
Ответ 1
Общая идея состоит в том, чтобы читать значение POST, анализировать его как XML, принимать на нем бизнес-решение, строить ответ XML в соответствии с API, который вы решили, и записывать его в ответ.
Считать значение POST:
$dataPOST = trim(file_get_contents('php://input'));
Разбирайте как XML:
$xmlData = simplexml_load_string($dataPOST);
Затем вы должны построить XML-строку (или дерево документов, если хотите) и распечатать ее в ответ. print() или echo() сделают все возможное.
Ответ 2
Все, что вам нужно сделать на принимающей стороне, это создать "обычный" PHP script. В зависимости от протокола между конечной точкой и запрашивающей службой вам необходимо захватить данные из правильного местоположения, которое, скорее всего, будет массивом $_ GET или $_ POST.
Возможно, вам придется прочитать необработанные данные POST, если они не пройдут через $_POST, возьмите пик в этой статье
http://www.codediesel.com/php/reading-raw-post-data-in-php/