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

Почему REST API у 1C-Битрикс не принимает POST?

Имеется дистрибутив 1C-Битрикс, установленный на свой сервер.

С горем-пополам настроил АПИ и создал Webhook.

Но проблема в том, что хук отказывается принимать запросы методом POST - только GET. Брал стандартный пример из справочника:
$queryUrl = sute.ru/catalog.section.add
$queryData = http_build_query(array(
    'fields' => array(
        "iblockId"=>1,
        "name"=>'NAME',
        "code"=>'CODE',
        "image"=>'image_base64'
    ),
    'params' => array("REGISTER_SONET_EVENT" => "Y")
));

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_SSL_VERIFYPEER => 0,
    CURLOPT_POST => 1,
    CURLOPT_HEADER => 1,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $queryUrl,
    CURLOPT_POSTFIELDS => $queryData,
));

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

var_dump($result);


Этот запрос работает на демо-версии Битрикс24, но на 1С-Битрикс я получаю ошибку {"error":100,"error_description":"Could not find value for parameter {fields}"}.

Полный текст ответа:

string(840) "HTTP/1.1 100 Continue HTTP/1.1 400 Bad Request Date: Fri, 10 Jul 2020 08:32:32 GMT Server: Apache/2.4.29 (Ubuntu) P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA" X-Powered-CMS: Bitrix Site Manager (DEMO) Set-Cookie: PHPSESSID=##############; path=/; HttpOnly Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Access-Control-Allow-Origin: * Access-Control-Allow-Headers: origin, content-type, accept X-Content-Type-Options: nosniff Set-Cookie: BITRIX_SM_SALE_UID=1; expires=Mon, 05-Jul-2021 08:32:32 GMT; Max-Age=31104000; path=/ Content-Length: 79 Connection: close Content-Type: application/json; charset=utf-8 {"error":100,"error_description":"Could not find value for parameter {fields}"}"

Гугление по коду/тексту ошибки не дало никаких результатов. Только научился предавать данные методом GET, прописывая в ссылку поля в формате "?fields[iblockId]=8&fields[name]...". Однако мне нужно передавать изображения, а их через GET никак не передашь.

Подскажите пожалуйста, что я делаю не так, как нужно составлять массив данных, чтобы битрикс понял, чего я хочу?
  • Вопрос задан
  • 3526 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Kontrael
Копайте в сторону редиректа, например в .htaccess. При редиректе, тело POST запроса теряется.
Возможно, у вас редиректы для всех запросов без слэша на конце, на аналог со слэшем. Или "без www" на "c www"
Ответ написан
@GuillimanRob
Попробуйте задать Content-Type 'application/json'
Возможно апишка битрикса просто не понимает какие данные ей отправили
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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