Как получить 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/