使用PHP发送Curl请求时出错:错误请求



我正试图从国家发布人事公告的地址中抓取数据。然而,无论我怎么努力,我都不能成功。我用打嗝套件检查了获取和发布请求。据我所知,我需要的页面地址是:https://www.ilan.gov.tr/api/api/services/app/Ad/AdsByFilter

我用打嗝套件检查了这个页面。我想我把页面想要的所有东西都添加到我为curl连接准备的函数中了。

我没有正确发送json格式的数据吗?我试了很多方法,但都失败了。

我在下面包含了细节。提前感谢您的帮助。

function scustom_curl($url){
$ch = curl_init();
$data = [
"keys" => [
"txv" => [
44 
], 
"ats" => [
5 
] 
], 
"skipCount" => 0, 
"maxResultCount" => 12 
]; 
$payload = json_encode(array($data));
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
$headers = array();
$headers[] = 'Host: www.ilan.gov.tr';
$headers[] = 'Cookie: _ga=GA1.3.951992202.1654450742; _gid=GA1.3.480689736.1654596075';
$headers[] = 'Content-Length: 65';
$headers[] = 'Sec-Ch-Ua: "-Not.A/Brand";v="8", "Chromium";v="102"';
$headers[] = 'Pragma: no-cache';
$headers[] = 'X-Request-Origin: IGT-UI';
$headers[] = 'Sec-Ch-Ua-Mobile: ?0';
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36';
$headers[] = 'Content-Type: application/json-patch+json';
$headers[] = 'Accept: text/plain';
$headers[] = 'Expires: Sat, 01 Jan 2000 00:00:00 GMT';
$headers[] = 'Cache-Control: no-cache';
$headers[] = 'X-Requested-With: XMLHttpRequest';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
return $result;
}

打嗝套件

$payload = json_encode(array($data));

应该只是

$payload = json_encode($data);

,因为$data已经是一个数组。当你将其编码为JSON时,你不需要将其包含在另一个数组中。