плагин Caldav WordPress без curl, используя вместо этого wp_remote_get ()

В настоящее время я пытаюсь написать плагин 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 ().
может у кого-нибудь есть подсказка для меня?

0

Решение

просто чтобы ответить на мой собственный вопрос, решение было использовать 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 );

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector