curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json; charset=utf-8",
"Content-Length: " . strlen($data_string))
//执行并获取HTML文档内容
$output = curl_exec($ch);
//释放curl句柄
curl_close($ch);
$output = json_decode($output, true);
return $output;
$output = curl_exec($ch);返回居然是false
我们在
curl_exec
函数前面通过
curl_error($curl)
获取错误也是
string(0) ""
空字符串。
最后经过多番查询,原来请求的是https链接 ,ssl协议,加上这两句就可以。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
来源:
在php中使用curl时返回false如何解决 - 开发技术 - 亿速云
在本地开发环境(window)phpstudy请求企业微信的接口时 private function httpPost($url, $data = array()) { $url = $this->host . '/' . $url; $data_string = json_encode($data); $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1);
症状:
php
curl
调用
https
出错 排查方法:在命令行
中
使用
curl
调用
试试。 原因:
服务器
所在机房无法验证SSL证书。
解决
办法:跳过SSL证书检查。
curl
_set
opt
($ch,
CURL
OPT
_SSL_VERIFYPEER,
false
); 症状:
php
curl
调用
curl
_
exec
返回
bool(
false
),命令行
curl
调用
正常。 排查方法: var_dump(
curl
_error($ch));
返回
: string(23) “Empty reply from server” 再排查:
curl
_set
opt
($ch,
CURL
OPT
_
HEADER
, true); cur
function request_post($url = '', $param = '') {
if (empty($url) || empty($param)) {
return
false
;
$postUrl = $url;
$
curl
Post = $param;
$
curl
=
curl
_init();//初始化
curl
curl
_set
opt
($
curl
,
CURL
OPT
_URL,$postUrl);//抓取指定网页
curl
_set
opt
($
curl
,
CURL
OPT
_
HEADER
, 0);//
设置
header
curl
_set
* @desc 封装
curl
的
调用
接口
,post的请求方式
function do
Curl
PostRequest($url, $requestString, $timeout = 5) {
if($url == "" || $requestString == "" || $timeout <= 0){
return
false
;
$con =
curl
_init((string)$url);
curl
_set
opt
($con,
CURL
OPT
_
HEADER
,
false
);
curl
_set
opt
($con,
curl
在请求
https
的链接
时
的处理
1、不验证证书和host
curl
_set
opt
($ch,
CURL
OPT
_SSL_VERIFYPEER,
false
);
curl
_set
opt
($ch,
CURL
OPT
_SSL_VERIFYHOST,
false
);
2、设定一个正确的证书。
下载新的ssl 本地判别文件http://
curl
.haxx.se/ca/cacert.pe...
在
调用
微信的
接口
的
时
候发现
curl
_
exec
返回值
为
false
,代码如下:
//
PHP
代码
function Post($url, $post_data = '', $timeout = 5){
$ch =
curl
_init();
curl
_set
opt
($ch,
CURL
OPT
_URL, $url);
if(...
function _
curl
($url, $data="", $type="POST", $
opt
ions=null){
if(empty($url)){
return
false
;
$type = in_array(strtoupper($type), ['POST','GET','PUT','PATCH','DELETE']) ? $type : "POST";
$connect_timeout =...
PHP
使用
curl
返回
false
的情况处理
一般情况下
使用
php
curl
去模拟访问 http 或者
https
可能会出现一些莫名其妙的问题,让人不好查找错误。
比如,以下是伪代码:
$response =
curl
_
exec
($ch);
return $response;
在执行后
curl
操作后发现
返回
:
bool(
false
)
像这样的错误,是比较懵逼的。
这
时
可以
使用
...
function request($url, $data = array(), $method = 'GET') {
$
curl
=
curl
_init();
$timeout = 30;
$
header
s = array(
'Content-Type: application/json',
'Accept: application/json'
curl
_set
opt
($
curl
,
CURL
OPT
_URL, $url);
curl
_set
opt
($
curl
,
CURL
OPT
_HTTP
HEADER
, $
header
s);
curl
_set
opt
($
curl
,
CURL
OPT
_RETURNTRANSFER, true);
curl
_set
opt
($
curl
,
CURL
OPT
_CONNECTTIMEOUT, $timeout);
curl
_set
opt
($
curl
,
CURL
OPT
_SSL_VERIFYPEER,
false
);
curl
_set
opt
($
curl
,
CURL
OPT
_SSL_VERIFYHOST,
false
);
if ($method == 'POST') {
curl
_set
opt
($
curl
,
CURL
OPT
_POST, true);
curl
_set
opt
($
curl
,
CURL
OPT
_POSTFIELDS, json_encode($data));
$result =
curl
_
exec
($
curl
);
$httpCode =
curl
_getinfo($
curl
,
CURL
INFO_HTTP_CODE);
curl
_close($
curl
);
if ($httpCode == 200) {
return json_decode($result, true);
} else {
return
false
;
这个方法
使用
curl
库来发送请求。它支持 GET 和 POST 方法,并允许您传递数据。它还
设置
了一些默认值来确保请求的安全性,例如
设置
了请求头的 content-type 和 accept 属性,关闭了 SSL 验证等等。
使用
此方法
时
,您只需要传递要
调用
的
接口
的 URL、请求的数据(如果需要)和请求的方法(默认为 GET)即可。例如:
```
php
$result = request('
https
://example.com/api/users', array('name' => 'John', 'email' => 'john@example.com'), 'POST');
这将向
https
://example.com/api/users 发送一个 POST 请求,其
中
包含名为 John 和电子邮件地址为 john@example.com 的用户数据。请求成功
时
,该方法将
返回
JSON 格式的响应数据。如果请求失败,则
返回
false
。