我尝试解析icloud日历(CalDav)。可以通过webcal-protocol访问日历。日历的地址类似于webcal://p19-calendarws.icloud.com/ca/....
所以我的(希望很简单)问题是:如何使用网络协议发送请求?我尝试使用请求模块,但得到了错误消息[Error: Invalid protocol: webcal:]
此外,nativ http模块似乎不适合。
修改 我尝试使用http模块: var url =" webcal://p19-calendarws.icloud.com/ca/**************" ;;
var http = require('http');
http.get(url, function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
获取以下错误:Error: Protocol:webcal: not supported.
解决方案:
首先,我必须在日历地址中将webcal://
替换为https://
。 Apple将重定向到日历的icalendar文件。由于重定向,我使用request模块,它可以很好地处理重定向。
var request = require('request');
var calendarUrl = 'webcal://p19-calendarws.icloud.com/*****';
var options = {
url: calendarUrl.replace('webcal://', 'https://'),
gzip: true
};
request(options, function (error, response, icalData) {
console.log(icalData);
});
答案 0 :(得分:3)
WebCal只是http。您所要做的就是更换方案。
使用不同方案的原因是浏览器能够轻松使用不同的应用程序来处理请求,但它只有100%的单个HTTP请求和GET
。它不是DAV。