1

我尝试解析 icloud 日历(CalDav)。该日历可通过 webcal-protocol 访问。日历的地址看起来像webcal://p19-calendarws.icloud.com/ca/....

所以我的(希望是简单的)问题是:如何使用 webcal-protocol 发送请求?我用请求模块尝试了它,但收到了那个错误消息[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);
    });
4

1 回答 1

3

WebCal 只是 http。您所要做的就是更换该方案。

使用不同方案的原因是,浏览器能够轻松地使用不同的应用程序来处理请求,但它 100% 是单个 HTTP 请求,并且GET. 这不是 DAV。

于 2015-01-21T18:11:22.303 回答