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

因此,我的(希望很简单)的问题是:如何使用Webcal协议发送请求?我尝试使用请求模块,但收到了错误消息[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://。苹果将​​重定向到日历的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。

关于node.js - 如何使用node.js发送Webcal请求?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28071912/

10-09 21:49