Android — как удалить участника из чата сервера xmpp через переполнение стека

Я пытаюсь удалить члена комнаты чата с сервера XMPP через php. Я использую запрос curl для этого.

Я следую за этой документацией:
https://www.igniterealtime.org/projects/openfire/plugins/restapi/readme.html#delete-a-user-from-a-chat-room

$url = "http://188.***.***.***/plugins/restapi/v1/chatrooms/".$roomName."/members/".$userJID;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/xml", "Authorization : ******")); //I am using plugin.userservice.secret key here
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
$json_response = curl_exec($curl);

$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);

Он должен вернуть мне HTTP-ответ 201, но я получаю форму входа сервера в ответ или 401 (неавторизованный пользователь).

Я пытаюсь сделать это с прошлой недели, но пока не получил никакого решения, пожалуйста, помогите мне.

Заранее спасибо за вашу поддержку.

0

Решение

Обратите внимание, что этот вопрос очень специфичен: он относится к конкретной реализации сервера XMPP (Openfire) и использует собственный нестандартный интерфейс (его плагин REST). Тот факт, что вы используете среду Android, PHP и / или cURL, не имеет значения.

Когда вы получаете 401 ответ, возникает проблема с аутентификацией.

Как указывает Роман в комментарии ниже, вы используете неверную документацию. использование этот вместо!

Два других наблюдения, которые сделал Роман (вне группы):

  • В «Авторизация:» есть лишний пробел. Это должно быть «Авторизация:»
  • Необходимо использовать свойство plugin.restapi.secret, а не plugin.userservice.secret.
2

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

Так как на этот вопрос уже есть хороший ответ, но я хотел бы ответить для конкретного контекста Android, чтобы другие пользователи, приходящие на этот вопрос, могли найти альтернативный способ.
Есть библиотека для RestApiClinet для Android Вот. Вы можете интегрировать его непосредственно как модуль Android. Вот приложение уже использую это. Вы также можете посмотреть на эту клиентскую библиотеку, написанную на PHP.

1

По вопросам рекламы [email protected]