Как добавить Content-length для http запроса в php - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу использовать octoparse API.И у меня появляется ошибка, когда я хочу очистить данные в API-интерфейсе octoparse.

И это мой код

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!

Может кто-нибудь знать, как решить мою проблему.Спасибо.

1 Ответ

0 голосов
/ 19 сентября 2018

вы используете несколько заголовков в 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),
    )
);
...