提问人:maidan 提问时间:11/1/2023 最后编辑:maidan 更新时间:11/2/2023 访问量:39
使用 Curl 获取 iCal 链接内容
Use Curl to get iCal link content
问:
直到几天前,这才起作用。我不知道是什么原因导致了这个问题:
<?php
$useragent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36';
$request_url = 'https://interface.casablanca.at/Export/ical.asmx/Get?Customer=A_6450_PEAK&q=QV82NDUwX1BFQUs6NQ';
$curl_timeout = 5; // seconds
$ch = curl_init();
if (strpos($request_url, 'https://') !== false) {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
}
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $curl_timeout);
curl_setopt($ch, CURLOPT_TIMEOUT, $curl_timeout);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
curl_setopt($ch, CURLOPT_ENCODING, ''); // handle all encodings
$content = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
$info = curl_getinfo($ch);
var_dump($info);
var_dump($content);
?>
我可以通过 Postman 成功获得卡萨布兰卡 iCal 链接。 当我在不同的 Web 服务器上使用不同的 iCal 链接时,Curl 调用有效。
只有在使用该链接时,什么都不会发生。卡萨布兰卡服务器的其他链接也失败了。
如果我将超时设置为 10 秒,我得到的错误是:
连接在 10001 毫秒后超时
如果我将超时设置为 120 秒,也会发生同样的事情(120 秒后)。
两者都var_dump不输出任何内容。
可能是网络服务器被阻止了还是其他原因?
答: 暂无答案
评论
var_dump($info); var_dump($content);
if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); }
curl_exec
The curl call works when i use a different link to a different iCal
...你的意思是完全来自不同网站的吗?在同一个“casblanca”网站上还有其他可以测试的吗?...是的,如果他们发现您使用了过多的带宽,他们可能会阻止您。虽然 iCal 的下载频率相当高,但如果他们这样做会有点奇怪。如果这是原因,您必须联系网站的维护者。Could it be the webserver is blocked or something?