2015-01-21 4 views
1

Я пытаюсь разобрать календарь icloud (CalDav). Календарь доступен через webcal-протокол. Адрес календаря выглядит так: webcal://p19-calendarws.icloud.com/ca/....Как я могу отправить запрос webcal с node.js?

Так что мой (надеюсь, простой) вопрос: как я могу отправить запрос с webcal-протоколом? Я попробовал это с модулем запроса, но получил это сообщение об ошибке [Error: Invalid protocol: webcal:] Также HTTP-модуль nativ кажется ему не подходящим.

Edit: Моя попытка с HTTP-модуля: вар 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

Вы пробовали прочитать его с помощью простых http (s)? Единственной альтернативой может быть [это] (https://github.com/mikedeboer/jsDAV). –

+0

Да, я пробовал модуль https, он не работает. Библиотека, которую вы опубликовали, является сервером WebDav. Но мне нужен клиент CalDav, который работает с протоколом webcal. – tschiela

+0

Звучит как возможность написать модуль NPM. –

ответ

3

WebCal - это просто http. Все, что вам нужно сделать, это заменить схему.

Причина, по которой использовалась другая схема, заключалась в том, чтобы браузеры могли легко использовать другое приложение для обработки запроса, но это 100% один HTTP-запрос и GET. Это не DAV.

+0

Но как я могу запустить запрос в узле? Пожалуйста, посмотрите на меня, как показано выше. – tschiela

+0

Спасибо. Ваш ответ привел меня к решению. Не сразу, но мне очень помогли. – tschiela

+0

Я сделал предположение в своем ответе, что вы знали, как сделать http-запрос;). Убедитесь, что вы заменили webcal на http и webcals на https. – Evert

 Смежные вопросы

  • Нет связанных вопросов^_^