主页 > 原创 | 学习笔记 > opensips开启mi_xmlrpc_ng模块启用http调用

opensips开启mi_xmlrpc_ng模块启用http调用

opensips开启mi_xmlrpc_ng模块启用http远程调用及参数传递,实例如下:

1.安装libxml2-dev及libmicrohttpd-dev

apt-get install libmicrohttpd-dev
apt-get install libxml2-dev

2.编译httpd模块和mi_xmlrpc_ng模块
通过make menuconfig命令,选择模块httpd、mi_xmlrpc_ng并编译。
3.更新/etc/opensips.cfg配置文件,增加类似如下内容

loadmodule "httpd.so"
modparam("httpd", "ip", "192.168.163.50")
modparam("httpd", "port", 8000)
modparam("httpd", "buf_size", 524288)
modparam("httpd", "post_buf_size", 40960)

loadmodule "mi_xmlrpc_ng.so"
modparam("mi_xmlrpc_ng", "mi_xmlrpc_ng_root", "xmlrpc")

4.重启opensips服务,并通过一个简单的curl.sh脚本测试

opensipsctl restart
curl 192.168.163.50:8000/xmlrpc -H "Host: 192.168.163.50" -H "User-Agent:My xmlrpc UA" -H "Content-Type: text/xml" -X POST -d "<?xml version='1.0'?>
<methodCall>
 <methodName>get_statistics</methodName>
 <params>
    <param>
     <value><string>net:</string></value>
    </param>
    <param>
     <value><string>uri:</string></value>
    </param>
  </params>
</methodCall>"

其中methodName为mi接口名称,papams为mi接口的参数列表

返回类似如下内容

ty@ty-desktop:~$ bash curl.sh
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param><value><string>net:waiting_udp:: 0
net:waiting_tcp:: 0
uri:positive checks:: 0
uri:negative_checks:: 0
</string></value></param>
</params>
</methodResponse>

脚本paste地址 https://notes.xdty.org/pvdegdg2e

参考链接
http://www.opensips.org/html/docs/modules/devel/httpd.html
http://www.opensips.org/html/docs/modules/devel/mi_xmlrpc_ng.html

评论:7

  1. 大树林 回复
    2014 年 11 月 24 日 于 上午 8:40

    你好,我用RPM包的方式安装了opensips1.11 最新发布包(其中已包括httd,mi_xmlrpc_ng 模块),在我没有没有加载httd,xmlrpc包时,我的opensips启动正常;当我修改/etc/opensips.cfg配置文件,增加类似如上内容(loadmodule “httpd.so”
    modparam(“httpd”, “ip”, “192.168.163.50”)
    modparam(“httpd”, “port”, 8000)
    modparam(“httpd”, “buf_size”, 524288)
    modparam(“httpd”, “post_buf_size”, 40960)

    loadmodule “mi_xmlrpc_ng.so”
    modparam(“mi_xmlrpc_ng”, “mi_xmlrpc_ng_root”, “xmlrpc”)

    我的opensips启动错误。

    因为我不知道centos 6.6的错误日志放在哪里,无法放上来。
    请问如何解决这个问题?
    thanks.

    • 大树林 回复
      2014 年 11 月 24 日 于 上午 8:46

      libmicrohttpd 已经安装好:

      [root@localhost opensips]# yum -y install libmicrohttpd
      Loaded plugins: fastestmirror, refresh-packagekit, security
      Setting up Install Process
      Loading mirror speeds from cached hostfile
      * base: centos.ustc.edu.cn
      * extras: mirrors.skyshe.cn
      * updates: mirrors.pubyun.com
      Package libmicrohttpd-0.9.33-4.el6.x86_64 already installed and latest version
      Nothing to do

    • tianyu 回复
      2014 年 11 月 24 日 于 上午 9:30

      这个得看log出错在哪里,如果你没有配置log路径,那么log在/var/log/messages。先清一下log(>/var/log/messages)然后重启opensips(opensipsctl restart/start)看看Error在什么地方。

      • 大树林 回复
        2014 年 11 月 24 日 于 上午 11:34

        我现在用的是centOS 6.6,下面是错误日志:
        Nov 23 18:20:06 localhost opensips: ERROR:core:yyparse: module ‘httpd.so’ not found in ‘/usr/lib64/opensips/modules/’

        说是找不到httpd.so 在路径’/usr/lib64/opensips/modules/’
        我手动查看了一下,确实打不到,同时我手动搜索整个文件系统,也没有这个文件。
        我的QQ:1766350833 ,大树林,能不能加我Q?
        谢谢

        • tianyu 回复
          2014 年 11 月 24 日 于 上午 11:37

          这个是因为没有编译httpd模块,需要编译httpd模块后再运行opensips。应该是rpm包本身没有支持这个模块

    • tianyu 回复
      2014 年 11 月 24 日 于 上午 9:32

      开启log需要把debug等级调大,例如增加如下内容
      ———-
      debug=4
      log_stderror=no
      log_facility=LOG_LOCAL0
      ———-
      log_stderror=yes可以在控制终端打出log

    • Aki Kaede 回复
      2014 年 12 月 9 日 于 上午 11:28

      把这两行注释调重启试试
      #modparam(“httpd”, “buf_size”, 524288)
      #modparam(“httpd”, “post_buf_size”, 40960)

发表评论

电子邮件地址不会被公开。 必填项已用*标注