如何在PHP中向HTTP请求添加Content-length

时间:2018-09-19 04:41:49

标签: php httprequest httpresponse

我想使用octoparse API。 而且我想在octoparse API中清除数据时出错。

这是我的代码

ini_set('max_execution_time', 300);
$url = 'https://dataapi.octoparse.com/api/task/RemoveDataByTaskId?taskId=<mytaskid>';

$options = array(
    'http' => array(
        'header'  => "Authorization: bearer <mykey>",
        'method'  => 'POST'
    )
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { 
echo 'error';
}    

var_dump($result);

我的结果

Warning: file_get_contents(https://dataapi.octoparse.com/api/task/RemoveDataByTaskId?taskId=<mytaskid>): failed to open stream: HTTP request failed! HTTP/1.1 411 Length Required

并且我尝试添加Content-length但它有一个错误我的新代码:

ini_set('max_execution_time', 300);
$url = 'https://dataapi.octoparse.com/api/task/RemoveDataByTaskId?taskId=<mytaskid>';

$a=strlen($url);
$options = array(
    'http' => array(
        'header'  => "Authorization: bearer <my key>",
        'method'  => 'POST',
        'header'  => sprintf('Content-Length: %d', $a)
    )
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { 
echo 'error';
}    

var_dump($result);

我的结果

Warning: file_get_contents(https://dataapi.octoparse.com/api/task/RemoveDataByTaskId?taskId=<mytaskid>): failed to open stream: HTTP request failed!

谁能知道如何解决我的问题。 谢谢。

1 个答案:

答案 0 :(得分:0)

您正在HTTP中使用多个标头。如果您使用多个标题,请按照以下步骤操作

'header' => array(
            "Authorization: bearer <my key>",
            sprintf('Content-Length: %d', $a)
        ),

您也可以使用此代码

$requestHeaders = array(
    'Content-type: application/x-www-form-urlencoded',
    'Authorization: bearer <my key>',
    sprintf('Content-Length: %d', strlen($url));
);
$options = array(
    'http' => array(
        'method' => 'POST',
        'header' => implode("\r\n", $requestHeaders),
    )
);