Отправка XML с аутентификацией HTTPS с использованием PHP и cURL

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestXML);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

Это работает довольно просто с тестовой строкой xml.

$requestXML = "<?xml version='1.0' encoding='utf-8'?><request>
<id>12345</id>
<email>[email protected]</email><request>";

(https://magp.ie/2010/04/12/post-xml-with-https-authentication-using-php-curl/)

Я комбинирую это с этим:

function xml_encode($mixed, $domElement=null, $DOMDocument=null) {
    if (is_null($DOMDocument)) {
        $DOMDocument = new DOMDocument('1.0', 'utf-8');
        $DOMDocument->formatOutput = true;
        xml_encode($mixed, $DOMDocument, $DOMDocument);
        echo $DOMDocument->saveXML();
    }
    else {
        if (is_array($mixed)) {
            foreach ($mixed as $index => $mixedElement) {
                if (is_int($index)) {
                    if ($index === 0) {
                        $node = $domElement;
                    }
                    else {
                        $node = $DOMDocument->createElement($domElement->tagName);
                        $domElement->parentNode->appendChild($node);
                    }
                }
                else {
                    $plural = $DOMDocument->createElement($index);
                    $domElement->appendChild($plural);
                    $node = $plural;
                    if (rtrim($index,'s')!==$index && count($mixedElement)>1) {
                        $singular = $DOMDocument->createElement(rtrim($index, 's'));
                        $plural->appendChild($singular);
                        $node = $singular;
                    }
                }

                xml_encode($mixedElement, $node, $DOMDocument);
            }
        }
        else {
            $domElement->appendChild($DOMDocument->createTextNode($mixed));
        }
    }
}

для генерации xml из массива (сохранение его в $ requestXML) (https://www.darklaunch.com/2009/05/23/php-xml-encode-using-domdocument-convert-array-to-xml-json-encode)

Он работает с тестовым xml, но, к сожалению, не с сгенерированным XML. Я объединяю $ requestXML следующим образом:

$requestXML = "&data = ";$requestXML .= xml_encode($data); // if the test xml comes here, everything works well

Я предполагаю, что сгенерированный xml на самом деле не является строкой, поэтому, возможно, он не отправляется с POSTFIELDS?

«Думаю, сгенерированный xml на самом деле не является строкой» - не угадайте - проверять! var_dump показывает, с каким типом данных вы имеете дело.
misorude 03.12.2018 12:50

Ваш исходный код напрямую отправляет $ requestXML как CURLOPT_POSTFIELDS, теперь вы пытаетесь отправить что-то в форме &data=... - почему? А почему ведущая &, что предшествует этому?

misorude 03.12.2018 12:52

Спасибо за вашу помощь. Я давно не программировал на PHP. var_dump (xml_encode ($ data)); -> NULL echo xml_encode ($ data); -> показывает мне красивый форматированный XML. Я скопировал этот форматированный XML раньше и использовал его как $ testXML = "<generatedXMLstuff> ..."; который работал. Я также отправил исходный код с дополнительными материалами раньше с помощью $ testXML. Ведущий & из-за дополнительных параметров, которые нужны принимающим серверам.

El Dan 03.12.2018 13:14

написание про помогло ... Я ничего не вернул в xml_encode (). Теперь это работает: // echo $ DOMDocument-> saveXML (); вернуть $ DOMDocument-> saveXML ();

El Dan 03.12.2018 14:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
116
0

Другие вопросы по теме