2015-01-21 5 views
1

icloud 캘린더 (CalDav)를 구문 분석하려고합니다. 캘린더는 webcal 프로토콜을 통해 액세스 할 수 있습니다. 캘린더 주소는 다음과 같습니다. webcal://p19-calendarws.icloud.com/ca/....node.js와 함께 webcal 요청을 보내려면 어떻게해야합니까?

내 잘하면 쉽게 질문 할 수 있습니다. 어떻게 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.

솔루션 : 우선 달력 주소 https://webcal://를 교체해야합니다. 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)로 읽으셨습니까? 다른 대안은 [this] (https://github.com/mikedeboer/jsDAV)뿐입니다. –

+0

예 https 모듈을 시도했지만 작동하지 않습니다. 게시 한 라이브러리는 WebDav 서버입니다. 하지만 웹캡 프로토콜과 함께 작동하는 CalDav 클라이언트가 필요합니다. – tschiela

+0

NPM 모듈을 쓸 수있는 기회처럼 들립니다. –

답변

3

WebCal은 http입니다. 당신이해야 할 일은 그 계획을 바꾸는 것뿐입니다.

다른 구성표가 사용 된 이유는 브라우저가 다른 응용 프로그램을 사용하여 쉽게 요청을 처리 할 수 ​​있었기 때문에 100 % 단일 HTTP 요청이고 GET입니다. DAV가 아니에요.

+0

하지만 노드에서 요청을 시작하는 방법은 무엇입니까? 위의 편집을 참조하십시오. – tschiela

+0

감사합니다. 당신의 대답이 나를 해결책으로 이끌었습니다. 직접은 아니지만 많이 도움이되었습니다. – tschiela

+0

http 요청을하는 방법을 알고 있다는 가정하에 대답했습니다. webcal을 http로 대체하고 webcal을 https로 대체하십시오. – Evert

관련 문제