Caldav WordPress плагин без curl, используя вместо этого wp_remote_get () - PullRequest
0 голосов
/ 13 ноября 2018

В настоящее время я пытаюсь написать плагин wordpress, который подключается к серверу caldav и создает файл .ics из данных календаря. в качестве первого шага я использовал https://uname.pingveno.net/blog/index.php/post/2016/07/30/Sample-public-calendar-for-ownCloud-using-ICS-parser в качестве отправной точки, которая работает нормально. Но администраторы WordPress отказываются принимать плагин, который использует обычный curl, они рекомендуют делать все это через WP http API: https://developer.wordpress.org/plugins/http-api/. Мне удалось подключиться к серверу caldav через этот API, но я не могу получить желаемый xml-ответ, только обычный html, который не содержит данные календаря как таковые, а таблицу файлов .ics, которая затем должна быть разбирается индивидуально, не очень элегантно ... Кажется, проблема в том, как реализовать эти 3 строки:

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'REPORT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);

через wp API, особенно:

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'REPORT');

, что кажется невозможным с помощью wp_remote_get () или wp_remote_post (). может, у кого-нибудь есть подсказка для меня?

1 Ответ

0 голосов
/ 16 ноября 2018

просто чтобы ответить на мой собственный вопрос, решение было использовать wp_remote_request () вместо wp_remote_get () или wp_remote_post (), потому что мне был нужен метод 'REPORT':

$args = array(
    'headers' => array(
    'Authorization' => 'Basic ' . base64_encode( $calendar_user . ':' 
    . $calendar_password ),
    'Content-Type' => 'application/xml; charset=utf-8',
    'Depth' => '1',
    'Prefer' => 'return-minimal'),
'method' => 'REPORT',
'body' => $body,
);
$response = wp_remote_request( $calendar_url, $args );

, который теперь работает как положено. может быть, кто-нибудь еще может использовать это ...

...