使用 Curl 获取 iCal 链接内容

Use Curl to get iCal link content

提问人:maidan 提问时间:11/1/2023 最后编辑:maidan 更新时间:11/2/2023 访问量:39

问:

直到几天前,这才起作用。我不知道是什么原因导致了这个问题:

<?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不输出任何内容。

可能是网络服务器被阻止了还是其他原因?

php 卷曲 icalendar

评论

1赞 ADyson 11/2/2023
什么也没发生......所以你的意思是什么都不输出?您的日志中是否有任何 PHP 错误?您的 PHP 脚本返回什么 HTTP 响应代码(假设您在浏览器中运行它)?尝试在之后添加,看看是否有任何卷曲错误。您也可以尝试在详细模式下运行 cURL,以防您从中获得线索。我们自己无法真正调查这么多,您需要这样做,因为我们无法访问您的环境。var_dump($info); var_dump($content);if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); }curl_exec
1赞 brombeer 11/2/2023
无法重现,该代码在这里工作正常(通过 CLI 运行)
0赞 ADyson 11/2/2023
谢谢。如果您只是不设置超时会怎样?还是将其设置为更大的值?
0赞 ADyson 11/2/2023
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?
1赞 Barmar 11/2/2023
这听起来绝对像是某处的网络块,而不是编程问题。

答: 暂无答案