спасибо pr1nc3 и Гурпалу Сингху
я изменил эту строку
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parameters));
для этого
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($parameters,true));
но у меня всегда такой результат
'{"error":{"result":null,"error":{"code":"internal-error","description":"STREAMED"}}}'
и здесь код
<?php
$url = 'https://query1.finance.yahoo.com/v1/finance/screener?lang=en-US®ion=US&formatted=true&corsDomain=finance.yahoo.com';
// $url = 'https://finance.yahoo.com/screener/unsaved/f0171a68-053e-42f2-a941-d6ecdf2ba6d1';
$parameters =
[
'size' => 25,
'offset' => 50,
'sortField' => 'intradaymarketcap',
'sortType' => 'DESC',
'quoteType' => 'EQUITY',
'topOperator' => 'AND',
'query' => array(
'operator' => 'AND',
'operands'=> array(
'operator' => 'or',
'operands' => array(
'operator' => 'EQ',
'operands' => array("region","jp")
)
)
),
'userId' => 'HFEELK3VBE3KPE4MGEA6PZTXXL',
'userIdType' => 'guid'
];
$headers =
[
'Accept: application/json, text/javascript, */*; q=0.01',
'Accept-Language: en-US,en;q=0.5',
'X-Requested-With: XMLHttpRequest',
'Connection: keep-alive',
'Pragma: no-cache',
'Cache-Control: no-cache',
];
$cookie = tmpfile();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.31');
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($parameters,true));
// curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parameters));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
?>
Я думаю, что ошибка в переменных $ параметров, но я не вижу, где
когда я сравниваю исходный вид отправки
{"size":25,"offset":0,"sortField":"intradaymarketcap","sortType":"DESC","quoteType":"EQUITY","topOperator":"AND","query":{"operator":"AND","operands":[{"operator":"or","operands":[{"operator":"EQ","operands":["region","jp"]}]}]},"userId":"HFEELK3VBE3KPE4MGEA6PZTXXL","userIdType":"guid"}
с моей переменной $ parameters, есть различия
{"size":25,"offset":0,"sortField":"intradaymarketcap","sortType":"DESC","quoteType":"EQUITY","topOperator":"AND","query":{"operator":"AND","operands":{"operator":"or","operands":{"operator":"EQ","operands":["region","jp"]}}},"userId":"HFEELK3VBE3KPE4MGEA6PZTXXL","userIdType":"guid"}