如何在erlang API处理程序中读取表单数据

问题描述 投票:0回答:1

我正在ejabberd中构建一个自定义HTTP模块,该模块基本上以erlang编码。客户端正在请求中发送表单数据。如何在erlang的API处理程序中解析或读取表单数据。

谢谢

api erlang xmpp multipartform-data ejabberd
1个回答
0
投票

如果使用httpc:request/4,则结果可以是{ok, Result} | {ok, saved_to_file} | {error, Reason}。如果{ok, Result}Result,则为tuple(),例如:

% Response
{ok, {{"HTTP/1.1",200,"OK"},
     [{"date","Tue, 05 Mar 2019 20:38:51 GMT"},
      {"server","Google Frontend"},
      {"content-length","54"},
      {"content-type","text/html; charset=utf-8"},
      {"x-cloud-trace-context",
       "801e26cb1bec64bbf24fd1e9259893e9"}],
     "Thank you for this dump. I hope you have a lovely day!"}}

对于此响应,获取所有标头并从标头中读取data字段,例如:

1> {ok, Resp} = {ok, {{"HTTP/1.1",200,"OK"},
      [{"date","Tue, 05 Mar 2019 20:38:51 GMT"},
       {"server","Google Frontend"},
       {"content-length","54"},
       {"content-type","text/html; charset=utf-8"},
       {"x-cloud-trace-context",
        "801e26cb1bec64bbf24fd1e9259893e9"}],
      "Thank you for this dump. I hope you have a lovely day!"}}.
2> {_Status, Headers, _Body} = Resp.
3> Headers.
[{"date","Tue, 05 Mar 2019 20:38:51 GMT"},
 {"server","Google Frontend"},
 {"content-length","54"},
 {"content-type","text/html; charset=utf-8"},
 {"x-cloud-trace-context",
  "801e26cb1bec64bbf24fd1e9259893e9"}]
4> proplists:get_value("date", Headers).
"Tue, 05 Mar 2019 20:38:51 GMT"

如果使用其他HTTP客户端库,则需要阅读官方文档,并查看返回的结果

© www.soinside.com 2019 - 2024. All rights reserved.