내 로컬 데이터베이스의 이벤트를 Davical 서버에 추가하려고합니다. 사실이 기능은 CalDav 서버와 호환되는 한 모든 CalDav 서버에 적용해야합니다. 되는 CalDAV 프로토콜) ...HTTP 요청 및 DDay.iCal을 사용하여 Davical 서버에 이벤트 추가
나는 here을 읽을 수있는 것을에서, 나는 그래서 여기 ... VCALENDAR 모음에 포함 된 이벤트를 추가하는 PUT 요청을 보낼 수 있습니다 내가 수행하려고 할 것입니다 :
try {
// Create the HttpWebRequest object
HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create("http://my_caldav_srv/davical.php/user/mycalendar");
// Add the network credentials to the request
Request.Credentials = new NetworkCredential(usr, pwd);
// Specify the method
Request.Method = "PUT";
// some headers - I MAY BE MISSING THINGS HERE???
Request.Headers.Add("Overwrite", "T");
// set the body of the request...
Request.ContentLength = bodyStr.Length;
Stream reqStream = Request.GetRequestStream();
// Write the string to the destination as a text file.
reqStream.Write(Encoding.UTF8.GetBytes(body), 0, body.Length);
// Set the content type header.
Request.ContentType = contentType.Trim();
// Send the method request and get the response from the server.
Response = (HttpWebResponse)Request.GetResponse();
}
catch (Exception e) {
throw new Exception("Caught error: " + e.Message, e);
}
내가 보내는 시체는 실제로 감정 달력입니다.
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
PRODID:-//davical.org//NONSGML AWL Calendar//EN
X-WR-CALNAME:My Calendar
END:VCALENDAR
내가 이해할 수없는 이유 때문에 "PUT"을 사용하여 호출하면 오류 (405) 메서드가 허용되지 않습니다. PUSH는 (500) 내부 서버 오류를 반환하지만 디버그 정보를 보면 그 이유는 PUT의 경우와 같습니다 ...
서버 측에서 디버깅 할 때 그 이유는 다음과 같습니다. CalDAV를-PUT-vcalendar.php는 다음 절은 위반 :
$c->readonly_webdav_collections
음, 첫째 날 번개에 입력 한 것과 같은 자격 증명을 사용하여, 나는에 추가/이벤트를 제거 할 수 있음을 언급하자 관리자 인터페이스, 나는 실제로 모든 권한을 사용자에게 부여했다. 그래서 그게 놀랍습니다. ...
어떤 도움을 주시면 감사하겠습니다! 나는 이유는 하나 일부 이벤트 ADRESS에 이벤트를 넣어해야한다는 것입니다
.... .... 그것을 가지고
즉 종류와 관련, 닉
iCalendar가 위의 방법으로 들여 쓰기되어서는 안됩니다. 모든 행은 열 0에서 시작해야합니다 (그렇지 않으면 iCalendar 파서로 한 줄로 접습니다). – hnh
덮어 쓰기 헤더가 PUT을위한 헤더가 아니므로 제거 할 수 있습니다. 대신에 If-Match : 'ETag'와 If-None-Match : *를 사용하여 인종을 보호하십시오. – hnh