PHP cURL CURLOPT_HEADERFUNCTION 失败,cURL 代码 23:写入失败 header
PHP cURL CURLOPT_HEADERFUNCTION failing with cURL code 23: Failed writing header
我正在尝试使用 PHP cURL 库对 API 进行简单调用以检索数据。我希望能够存储响应 headers 以及响应 body,为此我使用 CURLOPT_HEADERFUNCTION
如下:
$headers = [];
curl_setopt(
$cURLHandle,
CURLOPT_HEADERFUNCTION,
function ($cURLHandle, $header) use (&$headers) {
$pieces = explode(":", $header);
if (count($pieces) >= 2) $headers[trim($pieces[0])] = trim($pieces[1]);
}
);
但是当我运行上面的代码时,它会产生cURL error #23: Failed writing header
。
为什么会发生这种情况,我该如何解决?
发生这种情况是因为 header 长度(以字节为单位)需要从您为 CURLOPT_HEADERFUNCTION
提供的函数返回。
我相信,虽然我不确定这一点,这是因为PHP needs/wants能够报告[=的长度23=]s 来自 curl_getinfo(...)
个调用。
固定代码如下所示:
$headers = [];
curl_setopt(
$cURLHandle,
CURLOPT_HEADERFUNCTION,
function ($cURLHandle, $header) use (&$headers) {
$pieces = explode(":", $header);
if (count($pieces) >= 2) $headers[trim($pieces[0])] = trim($pieces[1]);
return strlen($header); // <-- this is the important line!
}
);
我正在尝试使用 PHP cURL 库对 API 进行简单调用以检索数据。我希望能够存储响应 headers 以及响应 body,为此我使用 CURLOPT_HEADERFUNCTION
如下:
$headers = [];
curl_setopt(
$cURLHandle,
CURLOPT_HEADERFUNCTION,
function ($cURLHandle, $header) use (&$headers) {
$pieces = explode(":", $header);
if (count($pieces) >= 2) $headers[trim($pieces[0])] = trim($pieces[1]);
}
);
但是当我运行上面的代码时,它会产生cURL error #23: Failed writing header
。
为什么会发生这种情况,我该如何解决?
发生这种情况是因为 header 长度(以字节为单位)需要从您为 CURLOPT_HEADERFUNCTION
提供的函数返回。
我相信,虽然我不确定这一点,这是因为PHP needs/wants能够报告[=的长度23=]s 来自 curl_getinfo(...)
个调用。
固定代码如下所示:
$headers = [];
curl_setopt(
$cURLHandle,
CURLOPT_HEADERFUNCTION,
function ($cURLHandle, $header) use (&$headers) {
$pieces = explode(":", $header);
if (count($pieces) >= 2) $headers[trim($pieces[0])] = trim($pieces[1]);
return strlen($header); // <-- this is the important line!
}
);