【问题标题】:CURL post sending PHPCURL 后发送 PHP
【发布时间】:2016-02-04 06:16:09
【问题描述】:

请看下面的代码:

$url='https://www.test.com/test.php';
$post='?field1=1&field2=2&filed3'; // no need array text as is
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
curl_exec ($ch);
curl_close ($ch)

应该是简单的代码,我用作参考http://curl.haxx.se/libcurl/php/examples/simplepost.html

我通过替换为变量来修改代码。

我需要将数据发送到属于第三方的远程服务器。对方的服务器有数据库。当我手动将www.test.com/test.php?field1=1&field2=2&filed3 复制到网络浏览器中时,数据保存到其他服务器的数据库中并在浏览器屏幕上响应{"Code":15,"Msg":null"},这意味着数据发送正确。尝试通过 PHP 脚本发送时,未保存在远程数据库中的数据也未收到响应消息。

【问题讨论】:

  • 什么不起作用?发生了什么,你有什么期待?
  • 请用所有这些信息更新您的答案

标签: php curl


【解决方案1】:

如果请求在您将请求输入到网络浏览器时有效,则很可能是 GET 而不是 POST 请求。一个简单的例子如下:

$url= 'http://www.test.com/test.php?field1=1&field2=2&filed3';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch);
}
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

var_dump($http_status);
var_dump($result);

我还设置了CURLOPT_RETURNTRANSFER 选项,以便您可以捕获$result 中的响应。

【讨论】:

  • 没错,我检查过,是 GET 请求。我用你的代码还是不行。 var_dump($result) 在屏幕上显示 bool(false)
  • 我在回答中添加了一些错误处理,以便您查看是否有问题。
  • 试过了,没有错误,得到 bool(false) 消息。网络浏览器上的相同字符串效果很好。
  • 网址是 https ,也许这会造成问题?我在 url 上添加 https 字符串,可能需要另一个参数
  • 我已经在我的答案中添加了对 HTTP 状态代码的检查 - 除此之外,您可能还想查看 this answer 以了解如何对 cURL 进行更深入的调试。跨度>
猜你喜欢
  • 2011-05-24
  • 2017-07-17
  • 2011-03-26
  • 2012-07-08
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多