Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: CURL - не передаются данные!
Форумы портала PHP.SU » » Работа с сетью » CURL - не передаются данные!

Страниц (1): [1]
 

1. Webdimas - 11 Августа, 2015 - 12:36:59 - перейти к сообщению
Я хочу отправить данные на web-сервер, на котором крутится 1С, делаю следующий запрос:

$myCurl = curl_init();
curl_setopt_array($myCurl, array(
CURLOPT_URL => 'http://mysite.ru/retail.ada/hs/RemainsFranchisee/1',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_ENCODING => "",
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_POST => true,
CURLOPT_USERPWD => "Администратор:",
CURLOPT_POSTFIELDS => http_build_query("test"),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain')
));
$response = curl_exec($myCurl);
curl_close($myCurl);

Авторизация проходит, модуль в 1С запускается, но в параметрах запроса, которые я передаю через CURLOPT_POSTFIELDS пусто. Подскажите, пожалуйста, что я делаю не так?
2. Мелкий - 11 Августа, 2015 - 12:49:28 - перейти к сообщению
Webdimas пишет:
CURLOPT_POSTFIELDS => http_build_query("test"),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain')

Понятий не имею, как там 1с работает, но вот это выглядит крайне подозрительно.
CURLOPT_POSTFIELDS сам выставляет заголовок Content-Type в application/x-www-form-urlencode d для строки или multipart/form-data для массива. А вы пытаетесь ещё раз переопределить заголовок и, наверное, это удаётся.
PHP, например, заполнит $_POST только для метода запроса POST и Content-Type application/x-www-form-urlencode d или multipart/form-data. Для нестандартных Content-Type парсить запрос придётся вручную. Возможно у этого вашего 1с та же особенность.
(Добавление)
А, и просто удивительная и логичная вещь - включите отображение ошибок.
Цитата:
PHP Warning: http_build_query(): Parameter 1 expected to be Array or Object. Incorrect value given in /home/melkij/test.php on line 3
3. Webdimas - 12 Августа, 2015 - 15:26:29 - перейти к сообщению
Добавил вывод ошибок, действительно логичная вещь, передаю массив, в Content-Type указываю multipart/form-data, но всё равно пусто. Ошибок нет. Может быть есть какой-то другой способ передать данные в POST запросе?


ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
$myCurl = curl_init();
curl_setopt_array($myCurl, array(
CURLOPT_URL => 'http://dev.aplix.local/retail.ada/hs/RemainsFranchisee/1',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_ENCODING => "",
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_POST => true,
CURLOPT_USERPWD => "Администратор:",
CURLOPT_POSTFIELDS => array("store" => "b39bc8d2-2ea9-11e4-9dce-005056a215eb"),
CURLOPT_HTTPHEADER => array('Content-Type: multipart/form-data')
));

$response = curl_exec($myCurl);
curl_close($myCurl);

 

Powered by ExBB FM 1.0 RC1