【发布时间】:2015-12-09 04:08:10
【问题描述】:
我正在使用hackney 并尝试使用here 中的说明将请求的主体作为流读取。 由于那里的代码是用 Erlang 编写的,我不得不对其进行调整以在 Elixir 中工作:
def read_body(max_length, client, acc) when max_length > byte_size(acc) do
case :hackney.stream_body(client) do
{:ok, data} -> read_body(max_length, client, acc <> data)
:done -> {:ok, acc}
{:error, reason} -> {:error, reason}
end
end
def read_body(max_length, client, acc) do
acc
end
我使用以下方式运行它:
acc = HackneyTutorial.read_body(20, client, "")
# I have my own methods for retrieving the client
问题是我希望使用上面的代码只从正文中读取前 20 个字节的数据,但是 acc 变量获取整个正文,它要么不考虑守卫 when max_length > byte_size(acc) ,或者它只是在第一次调用 :hackney.stream_body/1 时读取所有正文。
你认为什么可以解决这个问题?
【问题讨论】:
标签: elixir