繁体   English   中英

PHP Curl发布请求不起作用没有发布

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

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