1

我正在使用 Cowboy 和 ErlyDTL 在 Erlang 中创建一个简单的安全 (SSL) 网站以开始使用。在一个页面上,我有一个带有两个输入文本字段和一个提交按钮的表单。

<form role="form" method="POST" action="favorite">
  <table>
    <tr>
      <td>
        Color:
      </td>
      <td>
        <input type="text" name="color" required>
      </td>
    </tr>
    <tr>
      <td>
        Number:
      </td>
      <td>
        <input type="number" name="nr" required>
      </td>
    </tr>
    <tr>
      <td>
        <button type="submit" class="btn btn-default">Submitt</button>
      </td>
    </tr>
  </table>
</form>

我在处理程序中遇到错误,该处理程序获取 POST 的数据并对其进行处理。处理程序看起来像(仅处理程序函数):

handle(Req, State) ->
  io:format("handle~n"),
  {ok, BodyQs, _Req} = cowboy_req:body_qs(Req),
  io:format("POST ~p~n", [BodyQs]),

  Color = proplists:get_value(<<"color">>, BodyQs),
  Nr  = proplists:get_value(<<"nr">>, BodyQs),
  io:format("AllValues ~p, ~p~n", [Color, Nr]),

  - rest of code -

当我尝试获取 BodyQs 变量时发生错误。我知道这一点是因为我得到了第一个 io:format 文本。

错误:

进程中的错误...在节点上...退出值:{[reason, {badmatch, {error, timeout}}},{mfa,{favorite_handler, handle,2}},{stacktrace, [{favorite_handler,handle ,2,[{file,"src/favorite_handler.erl"},{line,41}]},{cowboy_handler,handler_handle,4,[{file, "src/cowboy_handler...

我的代码有什么问题?

使用 ssl 时是否可以通过 POST 获取数据?

编辑:我将用于获取 BodyQs 的命令放入 io:format 中,并且我在终端中获取了数据,但是当我尝试从 POST 中获取数据时,它一直给我这个错误。

io:format("POST data: ~p~n", [cowboy_req:body_qs(Req)]),

提前致谢

4

1 回答 1

0

我发现了我的错误。

我给了我所有的 Req 变量编号,比如 (Req, Req2, Req3, ...),起初我用 '_' 忽略了它们,除非我在其中放入一些数据,比如会话。

所以不要忽略 Req 变量;)

这解决了我的问题到下一个。

于 2015-07-31T14:46:43.080 回答