它没有发送帖子请求。我不确定为什么,或者我做错了什么。
这是数据库中的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。
答案 0 :(得分:1)
您实际上并没有发布帖子请求,您需要添加
curl_setopt($ch, CURLOPT_POST, true);
以发送POST请求。
有关详细信息,请参阅curl documentation,特别是curl_setopt documentation。
答案 1 :(得分:1)
除了@nvisser的建议外,您还应该捕获并查看curl请求的响应。按如下方式更改curl_exec
:
$response = curl_exec($ch);
因为您已将CURLOPT_RETURNTRANSFER设置为TRUE,所以curl_exec将所有响应封装为字符串并将它们返回到您选择的变量。
输出回复,您可能会找到更多信息来帮助您诊断问题。
在评论讨论后添加:
以下是我们应该做的事情:
由于您无法控制网络,请尝试在虚拟专用服务器上安装并激活Web服务器,以便您可以在http://localhost/fakeServer.php
安装Apache2或NGINX并进行设置后,在该Web目录的根目录下创建一个名为fakeServer.php
的小程序,并将API网址设置为http://localhost/fakeServer.php
。在该脚本中,创建一个日志,每次运行脚本时都会输出$_POST
标头的内容。
通过这种方式,您可以证明您的脚本是否正在向接收服务器发送请求及其外观。这将帮助您调试脚本以使用API类,并验证所有您的代码格式正确且运行正常。
让fakeServer.php
输出回复并在程序中检查该回复。如果一切正常,fakeServer.php
的输出将最终显示在$response
变量中。
如果一切都运行不正常,我们可以更好地控制测试环境以找到问题。