我在PHP脚本中使用cURL来测试我的API。当我尝试使用函数获取数据时,会抛出错误
错误:无法连接到alenke。测试端口80:连接被拒绝
但是当我在终端中执行它
curl --ipv4 -v "http://alenke.test/wp-json/chatbot/v1/brand";
给我
`Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to alenke.test (127.0.0.1) port 80 (#0)
GET /wp-json/chatbot/v1/brand HTTP/1.1
Host: alenke.test
User-Agent: curl/7.54.0
Accept:
HTTP/1.1 200 OK
Server: nginx/1.15.7
Date: Sun, 01 Sep 2019 16:47:36 GMT
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/7.3.7
X-Robots-Tag: noindex
Link: <http://alenke.test/wp-json/>; rel="https://api.w.org/"
X-Content-Type-Options: nosniff Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages Access-Control-Allow-Headers: Authorization, Content-Type Allow: GET `
并给我所有我需要的数据,但是何时执行此php脚本
function callAPI($method, $url, $data){
$curl = curl_init();
switch ($method){
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// OPTIONS:
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "admin:admin");
// EXECUTE:
$result = curl_exec($curl);
if(!$result){
if (curl_errno($curl)) {
echo 'Error: ' . curl_error($curl);
echo'//;
echo print_r(curl_getinfo($curl));
echo'//;
die("Connection Failure..?");
}
}
curl_close($curl);
return $result;
}
它告诉我这个错误
错误:无法连接到alenke。测试端口80:连接被拒绝
答案 0 :(得分:0)
我已将您的代码复制粘贴到计算机上的文件(test.php)中,并用
<?php .. ?>
块,并在函数后添加了如下调用:
$res=callAPI('GET', 'http://myserver/', '');
echo $res;
然后通过php test.php
在命令行中启动脚本,并获得了预期的结果(服务器的index.html文件)。
所以无论您做什么,都可以。首先尝试在命令行中对其进行测试,以查看是否已安装/启用了必要的模块。如果这样有效,请尝试修复您的Web服务器的配置文件。如果您需要更多帮助,请添加一些有关您的系统的信息(网络服务器,版本,操作系统以及任何相关内容)。系统管理员倾向于禁用共享主机上的某些功能(包括curl),也许您的默认配置基于此。
答案 1 :(得分:0)
我建议您检查防火墙并检查该域是否解析了ip。
telnet domain 80
telnet ipserver 80