从何处获取Ejabberd API网址和主机名

时间:2019-01-10 09:50:00

标签: xmpp ejabberd ejabberd-module ejabberd-api

我将使用ReactJs使用ejabberd开发一个聊天应用程序。我在我们的服务器上安装了ejabberd。我遵循下面链接中的API文档。

https://docs.ejabberd.im/developer/ejabberd-api/admin-api/#registered-users

我想在实施之前尝试邮递员中的任何api。但是我没有从任何文档中获得API URL和主机名。

我的ejabberd服务器管理员URL是http://192.168.5.242:5280/admin

此外,我希望使用https://www.npmjs.com/package/ejabberd。但是我可以看到主机名的用法。

我尝试了很多端口,而不是5280。但是对我不起作用。

2 个答案:

答案 0 :(得分:0)

  

但是我没有从任何文档中获得API URL和主机名。

您可以在ejabberd配置文件的“侦听”部分中定义端口号。例如,在我的情况下,我将5282用作mod_http_api,并将路径/ api:

  -
    port: 5282
    module: ejabberd_http
    request_handlers:
      "/api": mod_http_api
      "/bosh": mod_bosh
      "/oauth": ejabberd_oauth
      "/rest": mod_rest
  

我的ejabberd服务器管理员URL是http://192.168.5.242:5280/admin

然后,如果添加我所拥有的行,则mod_http_api的网址将为http://192.168.5.242:5282/api

答案 1 :(得分:0)

作为一个示例调用,我使用以下php脚本:

<?php
$url='localhost:5282/api/registered_users/';
$login="key";
$password='secret';
$request=null;
$info=array(
            "host"=>"localhost"
           );
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($info));
$output=curl_exec($ch);
curl_close($ch);
print_r($output);
?>

这是查询的结果:

$ php test.php 
["user1","user2"]

嗅探网络流量,这是查询:

POST /api/registered_users/ HTTP/1.1
Host: localhost:5282
Accept: */*
Content-Length: 20
Content-Type: application/x-www-form-urlencoded

{"host":"localhost"}

这是响应:

HTTP/1.1 200 OK
Content-Length: 17
Content-Type: application/json
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type, Authorization, X-Admin

["user1","user2"]