Сообщение Создание календаря по протоколу CALDAV на yandex mail.ru от 26.04.2022 3:31
Изменено 26.04.2022 4:50 Разраб
Создание календаря по протоколу CALDAV на yandex mail.ru
По теме: возможно ли создание календаря по протоколу CALDAV на yandex mail.ru?
И еще вопрос
Получаю: The remote server returned an error: (501) Not Implemented.
Что как бы намекает, что яндекс не позволяет создавать календари(но это не точно, т.к. инфы на сайте нет подробной).
Если же использовать современный подход:
получаю: Response status code does not indicate success: 500 (Server Error).
Где я ошибся?
Сам календарь формирую при помощи Ical.Net
Сами события нормально считываются обычным client.GetAsync.
за основу взял пример
UPDATE: OPTIONS запрос возвращает в том числе и MKCALENDAR
И еще вопрос
HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create("https://caldav.yandex.ru/calendars/login@yandex.ru/events-cal1");
Request.Method = "MKCALENDAR";
Request.Credentials = new NetworkCredential("login", "password");
Request.ContentType = "application/xml";
Request.SendChunked = true;
Request.TransferEncoding = "utf-8";
byte[] encodedBody = Encoding.UTF8.GetBytes(body);
Request.ContentLength = encodedBody.Length;
using (Stream reqStream = Request.GetRequestStream())
{
reqStream.Write(encodedBody, 0, encodedBody.Length);
reqStream.Close();
}
var response = (HttpWebResponse)Request.GetResponse();
String responseString = string.Empty;
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
responseString = reader.ReadToEnd();
}Получаю: The remote server returned an error: (501) Not Implemented.
Что как бы намекает, что яндекс не позволяет создавать календари(но это не точно, т.к. инфы на сайте нет подробной).
Если же использовать современный подход:
using var client = new HttpClient();
var login = Convert.ToBase64String(Encoding.ASCII.GetBytes("login:password"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", login);
HttpRequestMessage message = new HttpRequestMessage(new HttpMethod("MKCALENDAR"), "https://caldav.yandex.ru/calendars/login@yandex.ru/events-cal1")
{
Content = new StringContent(data, Encoding.UTF8, "application/xml")
};
message.Headers.Authorization = new AuthenticationHeaderValue("Basic", login);
using var response = await client.SendAsync(message);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();получаю: Response status code does not indicate success: 500 (Server Error).
Где я ошибся?
Сам календарь формирую при помощи Ical.Net
Сами события нормально считываются обычным client.GetAsync.
за основу взял пример
UPDATE: OPTIONS запрос возвращает в том числе и MKCALENDAR
Создание календаря по протоколу CALDAV на yandex mail.ru
По теме: возможно ли создание календаря по протоколу CALDAV на yandex mail.ru?
И еще вопрос
Получаю: The remote server returned an error: (501) Not Implemented.
Что как бы намекает, что яндекс не позволяет создавать календари(но это не точно, т.к. инфы на сайте нет подробной).
Если же использовать современный подход:
получаю: Response status code does not indicate success: 500 (Server Error).
Где я ошибся?
Сам календарь формирую при помощи Ical.Net
Сами события нормально считываются обычным client.GetAsync.
за основу взял пример
UPDATE 1: OPTIONS запрос возвращает в том числе и MKCALENDAR
UPDATE 2: Нашел вот эту штуку https://github.com/ProximoSrl/CalDav. она создает календарь(видно в веб-интерфейсе),
но список "calendar-collection-set" методом "propfind" не выдает(ошибка BadRequest).
И еще вопрос
HttpWebRequest Request = (HttpWebRequest)HttpWebRequest.Create("https://caldav.yandex.ru/calendars/login@yandex.ru/events-cal1");
Request.Method = "MKCALENDAR";
Request.Credentials = new NetworkCredential("login", "password");
Request.ContentType = "application/xml";
Request.SendChunked = true;
Request.TransferEncoding = "utf-8";
byte[] encodedBody = Encoding.UTF8.GetBytes(body);
Request.ContentLength = encodedBody.Length;
using (Stream reqStream = Request.GetRequestStream())
{
reqStream.Write(encodedBody, 0, encodedBody.Length);
reqStream.Close();
}
var response = (HttpWebResponse)Request.GetResponse();
String responseString = string.Empty;
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
responseString = reader.ReadToEnd();
}Получаю: The remote server returned an error: (501) Not Implemented.
Что как бы намекает, что яндекс не позволяет создавать календари(но это не точно, т.к. инфы на сайте нет подробной).
Если же использовать современный подход:
using var client = new HttpClient();
var login = Convert.ToBase64String(Encoding.ASCII.GetBytes("login:password"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", login);
HttpRequestMessage message = new HttpRequestMessage(new HttpMethod("MKCALENDAR"), "https://caldav.yandex.ru/calendars/login@yandex.ru/events-cal1")
{
Content = new StringContent(data, Encoding.UTF8, "application/xml")
};
message.Headers.Authorization = new AuthenticationHeaderValue("Basic", login);
using var response = await client.SendAsync(message);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();получаю: Response status code does not indicate success: 500 (Server Error).
Где я ошибся?
Сам календарь формирую при помощи Ical.Net
Сами события нормально считываются обычным client.GetAsync.
за основу взял пример
UPDATE 1: OPTIONS запрос возвращает в том числе и MKCALENDAR
UPDATE 2: Нашел вот эту штуку https://github.com/ProximoSrl/CalDav. она создает календарь(видно в веб-интерфейсе),
но список "calendar-collection-set" методом "propfind" не выдает(ошибка BadRequest).