如何在php中添加Content-length To http请求

问题描述 投票:1回答:1

我想使用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

我尝试添加内容长度但它有一个错误我的新代码:

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!

任何人都可以知道如何解决我的问题。谢谢。

php httprequest httpresponse
1个回答
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),
    )
);
© www.soinside.com 2019 - 2024. All rights reserved.