【问题标题】:Create a new calendar from CalDav API从 CalDav API 创建一个新日历
【发布时间】:2015-07-03 15:30:16
【问题描述】:

我正在尝试使用 SabreDav 在我的委托人的主文件夹中创建一个新日历。

我找不到如何实现这一点 - 有可能吗?

更新: 我发现了 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 发送失败,请求消息被取消...

提前致谢!

更新 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();

我得到的错误信息是

请求被中止:请求被取消

在服务器端,这里是访问日志:

192.168.1.200 - - [06/Jul/2015:09:51:48 +0200] "MKCALENDAR /calendarserver.php/calendars/admin/my_new_calendar/HTTP/1.1" 400 25 "-" "-"

错误日志是空的......所以我似乎收到了一个“错误请求”响应,在准备请求时没有被捕获?!

更新 3:正文包含特殊字符“éàê...”,这就是 contentlength 部分错误的原因!

【问题讨论】:

  • 您提供的信息太少。您要将其发送到的 URL 是什么?服务器返回的 HTTP 错误是什么? P.S.:创建日历的“现代”方式是通过 MKCOL,尽管所有服务器也应该支持 MKCALENDAR。
  • 我添加了尽可能多的细节 - 请参阅更新 2
  • 您需要找到一种方法来启用更多登录到您的服务器以找出它为什么会抛出 400。您省略了您的 body 变量,所以那里可能有问题。 P.S.:Request.ContentLength = body.Length 是错误的,您需要将 content-length 设置为 UTF8 字节长度,尽管在您的示例中应该没关系。

标签: api httprequest caldav sabredav


【解决方案1】:

我以 hnh 的评论作为答案:问题确实是 Request.ContentLength = body.Length

更正的代码是:

Request.ContentLength = Encoding.UTF8.GetByteCount(body);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多