论坛首页 综合技术论坛

ejabberd HTTP request handlers处理 post get

浏览 3789 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-10-21   最后修改:2011-06-13

小例子http://www.process-one.net/en/wiki/ejabberd_HTTP_request_handlers/

 

处理GET 

http://langxianzhe.com?version=1&token=c617b5435134c1735255edeb4f4b93b4&test=Test

关键是怎么处理Rquest#request.q中数据 以[{},{}]形式组成

我暂时采用了下面的方法 []中元素顺序 需 和url 中的顺序一致

process([], #request{method = 'GET', q=[{"version", Version}, {"token", Token}, {"test", test} ], host = Server,  ip = {IP, _Port}, data = Data}= Request) ->
 处理POST
http://langxianzhe.com/
<operator>
    <version>1</version>
    <test>test</test>
    <token>token</token>
</operator>
关键是对Data的解析
process([], #request{method = 'POST',host = Server,  ip = {IP, _Port}, data = Data}= _Request) ->
 27     ?DEBUG("in ~p :ip = ~p,data = ~p~n", [?MODULE,IP, Data]),
 28     IpStr = inet_parse:ntoa(IP),
 29     Tag = xml_stream:parse_element(Data),
 30     try
 31         case Tag of
 32             {xmlelement, "operator", [{_Type, "bind"}], SubEl} ->
 33                 Version = xml:get_subtag_cdata(Tag, "version"),
 34                 Vendor = xml:get_subtag_cdata(Tag, "test"),
 35                 Token = xml:get_subtag_cdata(Tag, "token"),
 
谁有更好的方法 请提供

 

 

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics