Я пытаюсь сделать почтовый запрос к 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"
Те же параметры, которые я отправляю с помощью почтальона (с правильным заголовком), на самом деле работают.
когда 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,
Других решений пока нет …