[英]PHP Curl post request not working no post
它没有发送发布请求。 我不确定原因为何,或者我做错了什么。
这是数据库中的API:
//servapi added to code for clarity
$servapi = "https://(hidingwebsiteforthispost).com/api.php?key=(my_key)&service=31&action=order&profile=[link]&amount=[amount]"
//original code
$arrayFind = array(
'[link]',
'[amount]'
);
$arrayReplace = array(
$link,
$quanity
);
$APILink = $servapi;
$APILink = str_replace($arrayFind, $arrayReplace, $APILink);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $APILink);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_exec($ch);
curl_close($ch);
主持人添加:
用户正在通过检查目标服务器上的帐户来验证POST请求是否成功。 如果成功,将在他的帐户下开始一个新订单。 当他使用来自requestmaker.com的API字符串时,将创建一个新订单,但是当他运行上述代码时,则不会创建一个新订单。
当使用var_dump检查curl_exec($ch)
返回的数据包时,用户指出响应为空。
用户还更新了他的代码,将CURLOPT_POST设置为true。
您实际上不是在进行发布请求,而是要添加
curl_setopt($ch, CURLOPT_POST, true);
为了发送POST请求。
有关更多信息,请参见curl文档 ,尤其是curl_setopt文档 。
除了@nvisser的建议外,您还应该捕获并查看curl请求的响应。 如下更改您的curl_exec
:
$response = curl_exec($ch);
由于已将CURLOPT_RETURNTRANSFER设置为TRUE,因此curl_exec将所有响应封装为字符串,并将其返回到您选择的变量中。
输出响应,您可能会找到更多信息来帮助您诊断问题。
在讨论后添加评论 :
这是我们应该做的:
由于您无法控制网络,因此请尝试在虚拟专用服务器上安装和激活Web服务器,以便可以在http://localhost/fakeServer.php
接收和处理请求。
安装Apache2或NGINX并对其进行设置后, fakeServer.php
在该Web目录的根目录中创建一个名为fakeServer.php
的小程序,并将API URL设置为http://localhost/fakeServer.php
。 在该脚本内,创建一个日志,该脚本在每次运行脚本时输出$_POST
标头的内容。
通过这种方式,您可以证明您的脚本是否正在向服务器发送请求以及请求的外观。 这将帮助您调试脚本使用API类,并确认所有代码都已经格式化好,运行正常。
让fakeServer.php
输出响应,并在程序中检查该响应。 如果一切正常,来自fakeServer.php
的输出将最终存储在$response
变量中。
如果一切运行不正常,我们可以更好地控制测试环境以发现问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.