@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 никак не передашь.

Подскажите пожалуйста, что я делаю не так, как нужно составлять массив данных, чтобы битрикс понял, чего я хочу?
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Kontrael
Копайте в сторону редиректа, например в .htaccess. При редиректе, тело POST запроса теряется.
Возможно, у вас редиректы для всех запросов без слэша на конце, на аналог со слэшем. Или "без www" на "c www"
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы