Я пытаюсь выполнить запрос XML CalDAV на сервер google caldav с PHP.Google CALDAV XML-запрос с использованием curl (php)
По какой-то причине Google CalDAV очень плохо документирован.
Целью является получение списка всех событий, включая данные, относящиеся к конкретным событиям. (например, начало, конец, сводка, ...). Цель состоит в том, чтобы сделать это максимально эффективно (все данные события в одном запросе).
Я понял, что это может быть выполнено с помощью запроса ОТЧЕТ.
Я использую код, найденный в this post.
Мой точный код:
запрос$xml= '<c:calendar-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav"><d:prop><c:calendar-data /></d:prop></c:calendar-query>';
$url = "https://apidata.googleusercontent.com/caldav/v2/*email*/events";
$user = "**********@gmail.com";
$pw = "*********";
$data = $this->doRequest($user, $pw, $url, $xml);
print_r($data);
}
public function doRequest($user, $pw, $url, $xml)
{
$c=curl_init();
$url = preg_replace('{^https?://[^/]+}', '', $url);
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_HTTPHEADER, array("Depth: 1", "Content-Type: text/xml; charset='UTF-8'", "Prefer: return-minimal"));
curl_setopt($c, CURLOPT_HEADER, 0);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($c, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($c, CURLOPT_USERPWD, $user.":".$pw);
curl_setopt($c, CURLOPT_CUSTOMREQUEST, "REPORT");
curl_setopt($c, CURLOPT_POSTFIELDS, $xml);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
$data=curl_exec($c);
curl_close($c);
return $data;
}
XML-копирования-вставки из the SabreDAV wiki.
Что возвращает Google, этот код является «Неизвестной ошибкой». Я знаю, что учетные данные из Google работают, так как я успешно попробовал некоторый запрос, используя встроенные запросы SabreDAV (например, propfind). Однако запрос SabreDAV не может быть создан.
Так что я думаю, что в запросе xml должно быть что-то, что Google Caldav не может обработать должным образом.
Я уже несколько дней занимаюсь этим, но я не могу найти правильное решение.
Сначала вам нужно узнать об этом «Unkown Error». Это сообщение о его собственном ist не спрашивает много. Пожалуйста, поставите свой вопрос программирования как можно более конкретным. – hakre
Случайные предложения. Можете ли вы попробовать удалить заголовок 'Depth'? Я чувствую, что я помню, что это, возможно, имело к этому какое-то отношение, но я не уверен ... – Evert
@hakre Короче говоря: что я делаю неправильно, чтобы получить правильный ответ от сервера Google CalDAV? Исследования не дают мне много информации о «Неизвестной ошибке». – Rbn