如何向API发送“正确”的POST请求

时间:2015-02-25 17:32:03

标签: php post curl

我目前正在尝试向API发送POST请求,但我似乎无法理解它。

我需要做的是发送如下所述的POST请求:

POST /v2/sessions HTTP/1.1
Host: api.etilbudsavis.dk
Content-Type: application/json
Accept: application/json
{
  "api_key": "YOUR_APP_KEY"
}

这是我尝试使用curl库处理它的方法之一:

$curl = curl_init("https://api.etilbudsavis.dk/v2/sessions");

$postData = array(
        'api_key' => '{'.$api_key.'}'
);

curl_setopt_array($curl, array(
    CURLOPT_POST => TRUE,
    CURLOPT_HTTPHEADER => array(
        "Host: localhost",
        "Content-Type: application/json",
        "Accept: application/json",
        "Origin: localhost"),
    CURLOPT_POSTFIELDS => json_encode($postData)
));

$response = curl_exec($curl);
if($response === FALSE){
    echo 'Error<br>';
}


$responseData = json_decode($response, TRUE);

// Print the date from the response
print_r($responseData);

print_r(curl_error($curl));

我在浏览器中的输出:

Error 
SSL certificate problem: unable to get local issuer certificate

我希望有人可以帮助我。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您发送了一个虚假的Host:标题。

此标头旨在告知托管多个虚拟主机的服务器在单个IP地址上,该请求所针对的vhost。 Curl会为您自动设置此标头,如果您试图规避DNS以开发/测试目标计算机,则只应手动覆盖此标头。