Я пытаюсь создать новый календарь в домашней папке моего директора с помощью SabreDav.Создайте новый календарь из CalDav API
Я не мог найти, как достичь этого - возможно ли это?
UPDATE: я узнал о методе MKCALENDAR, но следующие возвращает «заброшены» ошибка запроса:
<C:mkcalendar xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:ical="http://apple.com/ns/ical/" >"
<D:set>
<D:prop>
<D:displayname>cal Display Name</D:displayname>
<ical:calendar-color>cal Color</ical:calendar-color>
</D:prop>
</D:set>
</C:mkcalendar>
Отправка его с HttpWebRequest
терпит неудачу с отмененным запросом messgage ...
Заранее спасибо!
UPDATE 2: Некоторые подробности:
HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create("http://my.sabredavcalendar.srv/calendarserver.php/calendars/admin/my_new_calendar/");
Request.Method = "MKCALENDAR";
Request..Credentials = new NetworkCredentials("usr", "pwd");
Request.ContentType = "application/xml";
string body = "<C:mkcalendar [.....] </C:mkcalendar>";
Request.ContentLength = body.Length;
// ---
// The using block throws an error...
using (Stream reqStream = Request.GetRequestStream()) {
byte[] encodedBody = Encoding.UTF8.GetBytes(body);
reqStream.Write(encodedBody, 0, encodedBody.Length);
reqStream.Close();
}
Response = (HttpWebResponse)Request.GetResponse();
Сообщение об ошибке я получаю
The request was aborted: The request was canceled
На стороне сервера, вот журнал регистрации доступа:
192.168.1.200 - - [06/Jul/2015:09:51:48 +0200] "MKCALENDAR /calendarserver.php/calendars/admin/my_new_calendar/ HTTP/1.1" 400 25 "-" "-"
Журнал ошибок пуст ... поэтому кажется, что я получаю ответ «плохой запрос», который не пойман при подготовке re квест ?!
ОБНОВЛЕНИЕ 3: тело содержит специальные символы как «éàê ...», поэтому часть contentlength была неправильной!
Вы обеспечиваете слишком мало информации. Каков URL, на который вы отправляете это? Что такое ошибка HTTP, возвращаемая сервером? P.S .: «Современный» способ создания календарей осуществляется через MKCOL, хотя все серверы также должны поддерживать MKCALENDAR. – hnh
Я добавил столько подробностей, сколько мог - см. ОБНОВЛЕНИЕ 2 – neggenbe
Вам нужно выяснить способ включения большего количества регистрации на вашем сервере, чтобы выяснить, почему он выбрасывает 400. Вы опустили свою переменную тела, так что, возможно, что-то не так там. P.S .: Request.ContentLength = body.Length неверна, вам нужно установить длину содержимого в длину байта UTF8, хотя это не должно иметь значения в вашем примере. – hnh