caldav yahoo:报告忙忙查询导致 500 服务器错误

问题描述

我正在尝试从日历中获取忙闲时间,为此我正在使用“忙闲查询查询发出报告请求。在响应中,我收到 500 错误。我只是从文档中复制了代码,但没有返回任何结果。

客户请求

REPORT /dav/piyush138/Calendar/piyushkumar/ HTTP/1.1
Authorization: Basic XXXXXXXXXXXXXXX=
Host: caldav.calendar.yahoo.com:443
Depth: 1
Content-type: application/xml; charset="utf-8"
Content-Length: 216
User-Agent: DAViCalClient
Connection: close

<?xml version="1.0" encoding="utf-8" ?>
   <C:free-busy-query xmlns:C="urn:ietf:params:xml:ns:caldav">
     <C:time-range start="20210222T000000Z"  end="20210222T240000Z"/>
   </C:free-busy-query>

服务器响应

HTTP/1.1 500 Server Error
WSHost: tardis013.cal.bf1.yahoo.com
Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Sun,21-Feb-2021 09:07:36 GMT
Content-Length: 0
Age: 2
Date: Mon,22 Feb 2021 09:07:36 GMT
Server: ATS
Referrer-Policy: no-referrer-when-downgrade
Connection: close
Strict-Transport-Security: max-age=15552000
Expect-CT: max-age=31536000,report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only"
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff

解决方法

(这不是一个正确的答案 - 但如果我们能找到这个问题的正确答案,我最终会编辑它。我什至不知道雅虎有 CalDAV 支持,所以我显然不是最好的答案这个,但我可以提出一些建议)。

只有在服务器端出现错误时才应该给出 500 错误,从这个角度来看,雅虎可能应该在他们这边修复一些问题。无论如何,通常是因为服务器无法解析来自客户端的意外输入,或者只是没有实现该功能。

请尝试将 T2400 更改为 T2359,或者将日期推到 T0000。这是一个长镜头,我怀疑它会改变什么,但值得一试。

如果我正确理解 RFC4791,则必须支持 freebusy-requests,但实际上并不总是支持。我的猜测是雅虎并没有费心去实现对它的支持。

RFC6638 指定了一种不同的方式来发送空闲忙请求,也许雅虎支持。有关如何发送此类空闲忙请求的示例,请参见第 B.5 节 - https://tools.ietf.org/html/rfc6638#appendix-B.5

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...