1

icloud カレンダー (CalDav) を解析しようとしています。カレンダーは webcal-protocol 経由でアクセスできます。カレンダーのアドレスは次のようになりますwebcal://p19-calendarws.icloud.com/ca/....

だから私の(できれば簡単な)質問は次のとおりです:webcal-protocolでリクエストを送信するにはどうすればよいですか?リクエストモジュールで試してみましたが、そのエラーメッセージが表示されました[Error: Invalid protocol: webcal:]また、nativ http-module はそれに適していないようです。

編集: http-module を試してみました: 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 ファイルにリダイレクトします。リダイレクトのため、リダイレクトを非常にうまく処理するリクエストモジュールを使用します。

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 に答える