Я работаю над API для получения XML-файла, который, в свою очередь, будет читаться в нашей базе данных. Разбор и все работали с локальными файлами XML. Теперь последний шаг состоял в том, чтобы проверить, работает ли прием XML, и где я попал в блокпост. Пробовал много разных вещей до сих пор, но, похоже, не может заставить его работать. Мы предпочли бы работать с методом REST, но если это действительно не сработает, мы готовы его переключить. У вас много вопросов для отправки или получения XML-файла, но никогда в комбинации. Поэтому надеюсь, что я смогу получить солидный ответ на этот вопрос и не пропущу вопрос, который является дубликатом.PHP отправлять и получать XML
TL; DR: отправка и получение файлов XML через PHP, не знаю, где я делаю ошибку Отправляющая и принимающая части находятся в разных сценариях.
//Sending XML script.
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml',
'Content-length: '.strlen($xmlSend)));
curl_setopt($ch, CURLOPT_POSTFIELDS, array("recXML" => $xmlSend));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
//Receiving XML script
if(isset($_REQUEST['recXML'])){
$xmlTest = $_REQUEST['recXML'];
} else {
echo "NO REQUEST XML FOUND ";
}
if(isset($HTTP_RAW_POST_DATA)){
$xmlTest = $HTTP_RAW_POST_DATA;
} else {
echo " NO RAW DATA ";
}
if(isset($_POST['recXML'])){
$xmlTest = $_POST['recXML'];
}else{
echo " NO XML RECEIVED ";
}
if(!isset($xmlTest)){
return;
}
Это не полная логика, но я думаю, что это те части, которые важны, если вы хотите получить больше кода, просто спросите.
EDIT:
после некоторых изменений и перезагрузки моего компьютера, он, наконец, работал. Поэтому не совсем точно, какое изменение зафиксировало проблему, но опубликует код ниже, если кто-нибудь сможет найти его для использования.
//Sending script:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml',
'Content-length: '.strlen($xml)));
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
//receiving script
$xmlTest = file_get_contents("php://input");
echo $xmlTest;
$res = simplexml_load_string($xmlTest);
if($res === false){
echo "Failed loading XML: ";
foreach(libxml_get_errors() as $error){
echo "<br>", $error->message;
}
return;
} else {
//print_r($res);
}
Какая ошибка вы получаете? – NaeiKinDus
Он не дал ошибку, просто сообщения, которые я возвращаю, когда XML пуст. – Kezufru