我正在尝试使用SabreDav在我校长的主文件夹中创建新日历。从CalDav API创建新日历
我找不到如何做到这一点 - 它甚至有可能吗?
更新: 我发现了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 ......
提前致谢!
更新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:正文包含特殊字符“éàê...”,这就是内容长度部分错误的原因!
您提供的信息太少。您要发送给此网址的网址是什么?什么是服务器返回的HTTP错误? P.S .:通过MKCOL创建日历的'现代'方法,尽管所有服务器也应该支持MKCALENDAR。 – hnh
我添加了尽可能多的细节 - 请参阅更新2 – neggenbe
您需要找出一种方法来启用更多的日志记录在您的服务器,以弄清楚它为什么扔400.你省略了你的身体变量,所以也许有什么不对在那里。 P.S .: Request.ContentLength = body.Length是错误的,你需要将内容长度设置为UTF8字节长度,尽管在你的示例中它应该没有关系。 – hnh