我环顾四周,找不到解决我问题的解决方案。我收到以下错误:“请求的 URL 返回错误:413。”
我通过 curl 和 PHP 将一些信息发布到通过 HTTPS 的 URL。我被告知我必须将“Content-Length”与我的请求一起传递,因为目标是 https 而不是 http。
这是我正在使用的代码:
$user = '11111111111111111';
$books = array(111);
$data = array("action" => "books-shared", "userID" => $user, "bookIDs" => $books);
$data_string = array('json'=>json_encode($data));
$target_url = 'https://www.test.com/test.php'; // fake URL of course
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$api = curl_exec($ch);
我的 strlen($data_string) 命令返回的值为 5,这比 $data_string 的实际长度要小得多,后者要长得多。我认为这是问题所在,除非有人认为它可能是由其他原因引起的。