如何使用 node.js 发送 webcal 请求?
How can i send a webcal request with node.js?
我尝试解析 icloud 日历 (CalDav)。日历可通过 webcal 协议访问。日历的地址看起来像 webcal://p19-calendarws.icloud.com/ca/....
所以我的(希望很简单)问题是:我如何使用 webcal 协议发送请求?我用请求模块尝试了它,但收到了错误消息 [Error: Invalid protocol: webcal:]
而且 nativ http-module 似乎不适合那个。
编辑:
我对 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);
});
WebCal 就是 http。你所要做的就是替换方案。
之所以使用不同的方案,是为了让浏览器能够轻松地使用不同的应用程序来处理请求,但它 100% 是单个 HTTP 请求,并且是 GET
。这不是 DAV。
我尝试解析 icloud 日历 (CalDav)。日历可通过 webcal 协议访问。日历的地址看起来像 webcal://p19-calendarws.icloud.com/ca/....
所以我的(希望很简单)问题是:我如何使用 webcal 协议发送请求?我用请求模块尝试了它,但收到了错误消息 [Error: Invalid protocol: webcal:]
而且 nativ http-module 似乎不适合那个。
编辑: 我对 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);
});
WebCal 就是 http。你所要做的就是替换方案。
之所以使用不同的方案,是为了让浏览器能够轻松地使用不同的应用程序来处理请求,但它 100% 是单个 HTTP 请求,并且是 GET
。这不是 DAV。