Файл XML отсутствует, когда я отправляю данные XML в API как пост-запрос, используя php curl? - PullRequest
0 голосов
/ 01 мая 2020

Я получаю сообщение об ошибке «Файл 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 файл отсутствует ошибка.

...