在 PHP 中使用 cURL 有时会遇到错误,我们来看看如何调试 cURL 的错误。
首先可以使用的是 curl_errno 和 curl_error 函数,分别返回 HTTP 的错误代码和错误类别。例如:
<?php
$ch
= curl_init(
'http://example.com/'
);
curl_exec(
$ch
);
if
(curl_errno(
$ch
)) {
echo
'Curl error: '
. curl_error(
$ch
);
}
curl_close(
$ch
);
?>
|
其次,如果需要得到更详细的信息,可以用 curl_getinfo 函数。例如:
<?php
$ch
= curl_init(
'http://example.com/'
);
curl_setopt(
$ch
, CURLINFO_HEADER_OUT, true);
curl_exec(
$ch
);
if
(!curl_errno(
$ch
)) {
print_r(curl_getinfo(
$ch
));
}
curl_close(
$ch
);
?>
|
其中设置 CURLINFO_HEADER_OUT 选项之后 curl_getinfo 函数返回的数组将包含 cURL 请求的 header 信息。而要看到回应的 header 信息可以在 curl_setopt 中设置 CURLOPT_HEADER 选项为 true。
curl_exec 函数执行成功时,将根据 CURLOPT_RETURNTRANSFER 选项的值处理回应的正文信息:如果为 true 将作为字符串返回,如果为 false 将直接输出。执行失败时结果为 FALSE。也就是说,如果执行失败(假设是 400 错误),从 curl_exec 函数的结果中没法看到回应的正文(里面可能包含更加具体的错误信息)。要看到回应正文,有两种方法。第一种方法是设置 400 为成功的代码,例子如下:
curl_setopt(
$ch
, CURLOPT_FAILONERROR, false);
curl_setopt(
$ch
, CURLOPT_HTTP200ALIASES,
array
(400));
|
第二种方法是设置 CURLOPT_VERBOSE 为 true,同时将 CURLOPT_STDERR 设置为用 fopen 打开的一个文件。这样 cURL 将把和服务器的所有交互信息都记录到该文件中。
最后一个问题是:如何在 cURL 中看到请求的正文信息?这个问题似乎没看到解决办法。特别是你用 cURL 上传文件时,如果出错了,你不容易知道到底哪里出问题了。这个是 cURL 不好之处,你可以改用 fsockopen 或者 pfsockopen 试试。
参考资料:
[1]
Debugging Curl | Practical PHP Programming
[2]
Using PHP curl how does one get the response body for a 400 response
[3]
PHP cURL retrieving response headers AND body in a single request?
[4]
PHP 手册:pfsockopen
在 PHP 中使用 cURL 有时会遇到错误,我们来看看如何调试 cURL 的错误。首先可以使用的是 curl_errno 和 curl_error 函数,分别返回 HTTP 的错误代码和错误类别。例如: &lt;?php $ch = curl_init('http://example.com/'); curl_exec($ch); if (curl_errn...
php
curl
error:
php
curl
error code_大海技术博客-CSDN博客
有些时候发下浏览器可以访问的get接口,postman却返回false,打印error code后返回数值,可以参考上面的errror code值找到对应的值处理
首先直接ping一下,比如如果你的接口是get的
#ping
curl
"http://www.baidu.com.cn/api/getDriverInfo/?arg=%7B%22driver_id%22%3A8008%7D"
发下ping
七夕啦,作为开发,妹子没得撩就“撩”下服务器吧,妹子有得撩的同学那就左拥妹子右抱服务器吧,况且妹子是要礼物的,服务器又不用。好啦,长话短说再长说,祭出今天的工具——
CURL
(Client URL Library),当然今天以
PHP
的方式来使用这件工具。
0.
curl
是个什么东西
PHP
supports lib
curl
, a libra...
// 创建一个指向一个不存在的位置的
cURL
句柄
$ch =
curl
_init('http://404.
php
.net/');
curl
_setopt($ch,
CURL
OPT_RETURNTRANSFER, true);
if(
curl
_exec($ch) === false)
echo '
Curl
error: ' . c...
可以使用
PHP
的
curl
函数来模拟发送HTTP请求。首先需要初始化一个
curl
会话,设置请求的URL和其他参数,然后执行请求并获取返回结果。以下是一个简单的例子:
// 初始化
curl
$ch =
curl
_init();
// 设置请求的URL
curl
_setopt($ch,
CURL
OPT_URL, "http://example.com/api");
// 设置请求的参数
curl
_setopt($ch,
CURL
OPT_POST, true);
curl
_setopt($ch,
CURL
OPT_POSTFIELDS, "param1=value1¶m2=value2");
// 执行请求并获取返回结果
$response =
curl
_exec($ch);
// 关闭
curl
会话
curl
_close($ch);
这里示范了发送POST请求,并传递了两个参数。你也可以使用其他HTTP方法,如GET、PUT、DELETE等,以及设置其他相关参数。
请注意:以上回答仅供参考,不构成任何实际操作建议。
CSDN-Ada助手:
Hbuilder如何创建并运行Vue项目
我吃西红柿11:
我上网下载了rar压缩文件,有密码,用arpr工具怎么破解不了,_压缩文件密码
m0_55834113:
java中的void有什么作用啊?构造方法与方法有什么区别呢?
Copy-Paste:
如何激活Navicat?如何注册Navicat
Rionice: