ваш браузер отправляет данные в стиле url RFC-1738 с помощью запроса GET, а ваш код php curl отправляет данные в запросе POST, закодированном multipart/form-data
, неудивительно, что сервер запутывается.чтобы отправить данные в URL с помощью php так же, как это делает ваш браузер, избавьтесь от curl_setopt($ch, CURLOPT_POST, true);
(поскольку он говорит curl делать запрос POST вместо запроса GET по умолчанию, ваш браузер выполняет запрос GET) и curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
(поскольку он указывает curl отправлять его в теле запроса, в то время как ваш браузер отправляет его в URL), и измените CURLOPT_URL на
curl_setopt($ch, CURLOPT_URL, $uri."?".http_build_query($data));
, тогда ваш запрос php curl должен примерно соответствовать вашему запросу браузера, и получитьтот же ответ.(все еще будут небольшие отличия, такие как другой заголовок User-Agent, заголовок Accept и заголовок Accept-Encoding, но это обычно не имеет значения)