【发布时间】:2019-11-30 06:06:33
【问题描述】:
我正在用 Erlang 开发一个服务器实现,它有一个处理 HTTP 请求的接收循环。打开侦听套接字并生成接受器后,服务器已准备好接收连接。 TLS 握手完成,客户端连接到服务器并开始发送 HTTPS 请求。
服务器的接收部分使用ssl:recv/2 读取传入的请求,并且设置了套接字,以便数据包采用HttpPacket 的形式。到目前为止,“GET”请求的处理工作正常,但我需要包含“POST”请求。读取“POST”请求也可以,但我似乎无法读取请求的正文。
- 我应该如何阅读传入请求的正文?
- 可以用
ssl:recv/2阅读吗? - 套接字应该期待或格式化不同格式的数据吗?
- 您能推荐其他的吗?
我尝试过使用ssl:recv/2 和常规receive。使用receive 会冻结服务器直到超时。
case ssl:recv(Tls_socket, 0) of
{ok, {http_request, 'POST', Data, Vsn}} ->
do_something ...
数据最终为{abs_path, <<"/example/ex">>}。我希望数据是请求的主体。
我无法读取数据,因为套接字被设置为将数据打包为HttpPacket(即any())。不打包读取有帮助,所以剩下要做的就是解析查询。
【问题讨论】: