我正在尝试使用PHP和cURL运行GET请求。
下面是我的原始代码(摘自Postman,经过稍微编辑,Postman应用程序按预期返回API请求):
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://xxx.yyy.zzz",
CURLOPT_HTTPHEADER => array(
"apiPassword: password"
),
));
$response = curl_exec($curl);
curl_close($curl);
print_r($response);
?>
网站使用标头密码来标识我可以访问的API。
当我在服务器上运行php页面时,它将返回一个空白页面。
我尝试过的事情:
添加错误检查:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://xxx.yyy.zzz",
CURLOPT_HTTPHEADER => array(
"apiPassword: password"
),
));
$response = curl_exec($curl);
if(curl_errno($curl)){
echo 'Curl error: ' . curl_error($curl);
}
curl_close($curl);
print_r($response);
?>
响应是添加了错误检查的是单行文本,没有显示错误代码以帮助发现故障:
卷曲错误:
为cURL添加getinfo:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://xxx.yyy.zzz",
CURLOPT_HTTPHEADER => array(
"apiPassword: password"
),
));
$response = curl_exec($curl);
if(curl_errno($curl)){
echo 'Curl error: ' . curl_error($curl);
}
echo "</br>";
print_r(curl_getinfo($curl));
curl_close($curl);
print_r($response);
?>
响应:
卷曲错误:
Array([url] => http://xxx.yyy.zzz [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [文件时间] => -1 [ssl_verify_result] => 0 [重定向计数] => 0 [总时间] => 0 [namelookup_time] => 2.9E-5 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => [certinfo] => 数组()[primary_port] => 0 [local_ip] => [local_port] => 0)
尝试卷曲Google:
我试图查看是否是网站出现问题,所以我将URL更改为Google,并且收到了与上述相同的回复:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "http://www.google.com",
));
$response = curl_exec($curl);
if(curl_errno($curl)){
echo 'Curl error: ' . curl_error($curl);
}
echo "</br>";
print_r(curl_getinfo($curl));
curl_close($curl);
print_r($response);
?>
响应:
卷曲错误:
Array([url] => http://www.google.com/ [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.001668 [namelookup_time] => 0.001726 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 [redirect_url] => [primary_ip] => [certinfo] => 数组()[primary_port] => 0 [local_ip] => [local_port] => 0)
有人知道cURL为什么不起作用吗?我想念什么吗?
TIA
答案 0 :(得分:0)
其他人遇到我遇到的问题,我设法将其解决:
我改变了
if(curl_errno($curl)){
echo 'Curl error: ' . curl_error($curl);
}
到
if($errno = curl_errno($curl)) {
$error_message = curl_strerror($errno);
echo "cURL error ({$errno}):\n {$error_message}";
}
这实际上给了我错误代码和描述,从而使我能够确定问题所在。我收到连接错误。 (7)
我必须在SELinux上启用httpd
setsebool -P httpd_can_network_connect on
现在按预期工作。