Я получаю сообщение об ошибке «Файл XML отсутствует», когда я публикую данные XML с использованием CURL в PHP. И,
Я использовал многие статьи StackOverflow, но у меня ничего не вышло. Пожалуйста, помогите мне!
Код:
<?php
header('Content-Type: application/xml; charset=utf-8');
$results = getAPIResult();
echo($results);
?>
Следующая функция используется для выполнения CURL
<?php
function getAPIResult() {
$user = array(
"user" => "test",
"pass" => "test@123"
);
$xml = '<?xml version=\'1.0\' encoding=\'UTF-8\'?> <Data xmlns:xalan="http://xml.apache.org/xslt"><DataID></DataID><DataName></DataName><DataDisplayName><![CDATA[Test display name]]></DataDisplayName></Data>';
$curlObj = curl_init();
$options = [
CURLOPT_URL => "https://domainname/login",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_AUTOREFERER => true,
CURLOPT_HEADER => false,
CURLOPT_COOKIEFILE => 'cookie.txt',
CURLOPT_COOKIEJAR => 'cookie.txt',
CURLOPT_TIMEOUT => 30,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($user),
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_HTTPHEADER => ['Expect:'],
CURLOPT_IPRESOLVE => CURL_IPRESOLVE_V4,
CURLOPT_NOBODY => false,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_COOKIE => "cookiename=0",
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7",
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_CUSTOMREQUEST => "POST",
];
curl_setopt_array($curlObj, $options);
$returnData = curl_exec($curlObj);
if (curl_errno($curlObj)) {
//error message
$returnData = curl_error($curlObj);
}
$apiURL = 'https://domainname/api/data';
//Actual API URL is "https://domainname/api/data?action=create&source=" and gave xml source data.
$post_data = array(
"action" => "create",
"source" => $xml,
);
if ($apiURL != "") {
curl_setopt_array($curlObj, array(
CURLOPT_URL => $apiURL,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_FOLLOWLOCATION => 0,
CURLOPT_COOKIEFILE => 'cookie.txt',
CURLOPT_COOKIEJAR => 'cookie.txt',
));
if (is_array($post_data) && count($post_data) > 0) {
curl_setopt_array($curlObj, array(
CURLOPT_POST => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => http_build_query($post_data),
CURLOPT_RETURNTRANSFER => true,
));
}
$returnData = curl_exec($curlObj);
if (curl_errno($curlObj)) {
//error message
$returnData = curl_error($curlObj);
}
curl_close($curlObj);
return $returnData;
}
?>
Пожалуйста, дайте мне знать, почему это не работает? и я получаю XML файл отсутствует ошибка.