繁体   English   中英

如何从 Curl PHP 获得 Perl 帖子的响应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM