【发布时间】:2020-01-12 08:40:11
【问题描述】:
这是我的问题。我正在一台运行良好的远程机器上运行一项服务。机器获取结果的方式是通过api。
curl -X GET http://ip:777/api \
-d "r=request"
它在终端上完美运行。此外,如果请求查询很短,它可以完美运行。但是,一旦它变成了一个大问题,它会传递一些长度(1800-2000 个字符,我需要 7k-8k 个字符)。
但是,我无法将 curl 代码“音译”为 PHP。如果有人知道如何做,请告诉我方法。据我所知,这是一个带有 REQUEST BODY 的 curl GET 方法。
$long_query = "r=" . $request;
// set the api
curl_setopt($ch, CURLOPT_URL, 'http://ip:777/api');
// i want to get the return
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 2min+ timeout as to make sure that I get a result
curl_setopt($ch, CURLOPT_TIMEOUT, 140);
// Set request method to GET by 0'ing the POST method
curl_setopt($ch, CURLOPT_POST, 0);
// Set query data here with CURLOPT_POSTFIELDS
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($long_query));
$content = curl_exec($ch);
curl_close($ch);
echo $content;
我在这里做错了什么?如果有人知道,请像教一岁孩子一样解释。提前致谢!
【问题讨论】:
-
这能回答你的问题吗? PHP cURL GET request and request's body
-
@Zeitounator 没有任何帮助。已经检查过了。
-
@Akam 当我使用本地计算机上的终端发送请求时,服务器端没有问题。 curl 通过终端完美运行。只是我无法使用 php
-
有没有办法发出 POST 请求?因为 GET url 大小有限制。虽然它取决于服务器或浏览器,例如 apache,但 LimitRequestLine 的默认值为 8190 字节。 httpd.apache.org/docs/2.4/mod/core.html#limitrequestline