заголовок php curl установлен в настоящее время

Я пытаюсь сделать почтовый запрос к salesforce «api».
однако он принимает только тот тип контента, который явно установлен на "application/x-www-form-urlencoded"

Когда я делаю это:

curl_setopt_array($ch, array(
CURLOPT_URL => 'https://www.salesforce.com/servlet/servlet.WebToLead',
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POST => 3,
CURLOPT_POSTFIELDS => json_encode(array (
'first_name' => 'foo',
'last_name' => 'faa',
'email' => '[email protected]',
'oid' => '#hash',
'recordType' => '#hash'
)),
CURLOPT_HTTPHEADER=>array(
'Content-type: application/x-www-form-urlencoded'
)
));

$data = curl_exec($ch);
$info = curl_getinfo($ch);

Тип содержимого заголовка ответа всегда:
"text/html;charset=UTF-8"

Те же параметры, которые я отправляю с помощью почтальона (с правильным заголовком), на самом деле работают.

0

Решение

когда CURLOPT_POST является true, завитки Content-Type запроса к application/x-www-form-urlencoded автоматически; вам не нужно делать это вручную.
Вы можете проверить это (а также проверить все остальные «исходящие» заголовки), установив CURLINFO_HEADER_OUT в true перед вашим запросом, затем проверка массива, возвращенного curl_getinfo(),

Я подозреваю, что ваша проблема не имеет ничего общего с заголовками запросов, а с тем, как curl обрабатывает https. Установка их в вашем curl_setopt_array() должно помочь:

CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 2,
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]