CURL修改请求标头
我希望有人能帮助我。 我使用PHP通过CURL发送API请求。 第三方应用程序的标题需要如下所示:
$headers = array(
"content-type: application/json",
"Accept: application/json"
);
CURL请求被初始化并发送如下:
// 1. initialize
$ch = curl_init();
// 2. set the options, including the url
curl_setopt($ch, CURLOPT_URL, $this->sendPropertyUrl);
curl_setopt($ch, CURLOPT_HEADER, $headers);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSLCERT, $this->certPath);
curl_setopt($ch, CURLOPT_CAINFO, $this->certPath);
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $this->certPassword);
curl_setopt($ch, CURLOPT_POSTFIELDS, $propertyDataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 3. execute and fetch the resulting HTML output
$rightmoveResponse = curl_exec($ch);
$output = json_decode($rightmoveResponse, true);
但是,如果我捕获实际在CURL请求中发送的头信息,则输出如下所示:
POST /v1/property/sendpropertydetails HTTP/1.1
Host: adfapi.adftest.rightmove.com
Accept: */*
Content-Length: 1351
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue
任何人都可以解释为什么CURL修改了Accept和Content-Type参数吗?
任何帮助不胜感激。
布赖恩
你想要的是由CURLOPT_HTTPHEADER
而不是CURLOPT_HEADER
定义的。
来自PHP文档:
CURLOPT_HEADER如果在输出中包含标题, 则为 TRUE。
CURLOPT_HTTPHEADER用于设置格式数组('Content-type: text/plain', 'Content-length: 100')
的HTTP头字段数组
请参阅此用户注意事项关于使用它。
你使用了curl_setopt($ch, CURLOPT_POST, true);
它设置内容类型。 改用curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
(见http://php.net/manual/en/function.curl-setopt.php)。
这是@Alan Machado所说的。
链接地址: http://www.djcxy.com/p/48907.html