目前php curl header set

时间:2014-09-30 12:29:38

标签: php curl http-headers salesforce

我正在尝试向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' => 'my.email@gmail.com',
                        '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"

我使用邮递员发送的相同参数(带有正确的标题)实际上有效。

1 个答案:

答案 0 :(得分:1)

CURLOPT_POSTtrue时,curl会自动将请求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,