Поэтому мне нужно создать приложение, которое получит запрос 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; }
Мой вопрос: какой будет код на принимающей стороне? Как поймать входящий запрос? Благодарю.
Общая идея состоит в том, чтобы прочитать значение POST, проанализировать его как XML, принять на нем бизнес-решение, построить ответ XML в соответствии с API, который вы решили, и записать его в ответ.
Прочтите значение POST:
$dataPOST = trim(file_get_contents('php://input'));
Разбирайте как XML:
$xmlData = simplexml_load_string($dataPOST);
Затем вы должны построить XML-строку (или дерево документов, если хотите) и распечатать ее в ответ. print () или echo () сделают все возможное.
Все, что вам нужно сделать на принимающей стороне, – создать «обычный» PHP-скрипт. В зависимости от протокола между конечной точкой и запрашивающей службой вам необходимо получить данные из правильного местоположения, которое, скорее всего, будет массивом $ _GET или $ _POST .
Возможно, вам придется прочитать необработанные данные POST, если они не пройдут через $ _POST, возьмите пик в этой статье