郎咸武

郎咸武的博客

他的个人主页  他的博客

ejabberd HTTP request handlers处理 post get

郎咸武  2010年10月21日 星期四 18:29 | 1839次浏览 | 0条评论

ejabberd HTTP request handlers处理 post get

预览文章: ejabberd HTTP request handlers处理 post get

永久链接:  http://langzhe.javaeye.com/blog/790765

小例子 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 中的顺序一致

Erlang代码 
  1. 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的解析
Erlang代码 
  1. process([], #request{method =  'POST' ,host = Server,  ip = {IP, _Port}, data = Data}= _Request) ->  
  2.   27      ?DEBUG( "in ~p :ip = ~p,data = ~p~n" , [?MODULE,IP, Data]),  
  3.   28      IpStr = inet_parse:ntoa(IP),  
  4.   29      Tag = xml_stream:parse_element(Data),  
  5.   30      try  
  6.   31          case Tag of  
  7.   32              {xmlelement,  "operator" , [{_Type,  "bind" }], SubEl} ->  
  8.   33                  Version = xml:get_subtag_cdata(Tag,  "version" ),  
  9.   34                  Vendor = xml:get_subtag_cdata(Tag,  "test" ),  
  10.   35                  Token = xml:get_subtag_cdata(Tag,  "token" ),  
 
谁有更好的方法 请提供

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !

暂时没有评论

Zeuux © 2024

京ICP备05028076号