Хорошо, вот мы go с правильным ответом.
на терминале,
curl -X GET http://ip:777/api \
-d "r=request"
работает отлично. Однако проблема с преобразованием этого значения в php curl довольно хлопотная и в то же время очень простая.
Я прочитал все проблемы со стеком, и никто не дал четкого ответа на этот вопрос. проблема. Я не уверен, что причина этого, но как щедрый человек, я дам код, чтобы любой в будущем, столкнувшийся с этой редкой проблемой, мог легко ее решить.
Короче говоря,
curl -X GET -d
совпадает с curl -X POST -H "X-HTTP-Method-Override: GET"
.
Фактическим запросом является POST, но СЕРВЕР будет рассматривать его как GET. Таким образом, вы не столкнетесь с проблемой LONG URI.
$long_query = "r=" . $request;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"ip:777/api");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $long_query); //Post Fields
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$headers = [
'X-HTTP-Method-Override: GET',
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$server_output = curl_exec ($ch);
curl_setopt($ch, CURLOPT_TIMEOUT, 140);
curl_close ($ch);
var_dump($server_output);
Я установил тайм-аут на 140, поскольку запрос длинный, и серверу через него требуется немного времени go. и ответить (в моем случае это json). Тем не менее, я добавил var_dump, чтобы каждый, кто использует его в будущем, мог видеть, является ли он сериализованным массивом или чем-то еще.
Удачи!