Задать вопрос
InsaneRay
@InsaneRay

Как передать post запрос с параметром в curl?

Нужно отправить на адрес xml, содержимое которого должно хранится в $_POST['xml_request']
Я написал следующий код,
$send_url = 'https://integration.cdek.ru/new_orders.php';  

$bodyData = array (
  'xml_request' => $xml_result
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $send_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: text/xml; charset=utf-8',
    'Content-Length: '.strlen($bodyData)
    ) 
);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $bodyData);

$result = curl_exec($ch); 
curl_close($ch);

но сервер отвечает, что значение $_POST[xml_request] является пустым.
Каким образом можно передать $_POST с параметром ['xml_request'] в curl?
  • Вопрос задан
  • 2406 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@D3lphi
В $bodyData должна лежать строка с параметрами, а не массив. Преобразовать массив в строку можно следующим образом:
$bodyData = http_build_query(array (
  'xml_request' => $xml_result
));

Например, из массива ['key1' => 'val1', 'key2' => 'val2'] мы получим строку "key1=val1&key2=val2".
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы