[英]How to get the response of Perl Post from Curl PHP
美好的一天,我的客户给了我们一个 API 端点,当您传入一些命令时,响应是 XML,我想知道是否有一种方法可以在 Z2FEC392304A5C23AC7138DA228ZBC79 中运行端点并返回响应。 我尝试使用 PHP curl 但响应显示 400 或错误请求。 我可以使用 URL 浏览器中的命令/参数访问端点,所以它可以工作,但是当我使用 curl 尝试它时。 里面没有任何反应,这可能吗? 还是我的代码做错了什么?
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://www.winquote.net/cgi-bin/compete.pl?dc=-cv1.5 -ccca -qt0 -pccaXXXXXXXXX -rt0 -dob11061992 -gen1 -rR -fa500000 -pg0 -pi4 -lc1 -pm0 -rc0 -rop0 -langen -fmt -ceilp -faEXACT",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST"
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
查看PHP Curl 中 postFields 中的空格,它可能会回答您的问题。
这里唯一的问题是查询参数不正确,'400' 响应是这样说的。 在浏览器中,您会看到空格已转换为“%20”。浏览器已为您完成了这项工作。 你必须做类似的事情,即编码你的查询参数,因为在做发布请求之前有空格。
来自https://curl.haxx.se/docs/manpage.html#--data-urlencode
--data-urlencode
(HTTP) 这将发布数据,类似于其他 -d、--data 选项,不同之处在于它执行 URL 编码。
要符合 CGI,该部分应以名称开头,后跟分隔符和内容规范。 可以使用以下语法之一将该部分传递给 curl:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.