从CalDav API创建新日历
我正在尝试使用SabreDav在校长的主文件夹中创建一个新日历 我找不到如何做到这一点——这有可能吗 更新: 我发现了MKCALENDAR方法,但下面返回了一个“放弃”请求错误:从CalDav API创建新日历,api,httprequest,caldav,sabredav,Api,Httprequest,Caldav,Sabredav,我正在尝试使用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>
<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>
我收到的错误消息是
请求已中止:请求已取消
在服务器端,以下是访问日志:
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部分出错的原因 我把hnh的评论作为一个答案:问题确实是
请求。ContentLength=body.Length
更正代码为:
Request.ContentLength = Encoding.UTF8.GetByteCount(body);
你提供的信息太少了。您将此信息发送到的URL是什么?服务器返回的HTTP错误是什么?注:创建日历的“现代”方法是通过MKCOL,尽管所有服务器都应该支持MKCALENDAR。我添加了尽可能多的详细信息-请参阅更新2。您需要找到一种方法,在服务器中启用更多日志,以了解为什么它会抛出400。你省略了你的身体变量,所以可能有什么地方不对劲。注意:Request.ContentLength=body.Length是错误的,您需要将内容长度设置为UTF8字节长度,尽管这在您的示例中并不重要。
Request.ContentLength = Encoding.UTF8.GetByteCount(body);