拆分时 gen_tcp recv 中的错误参数
bad argument in gen_tcp recv when split
您好,我正在阅读一个我想获取路径的请求,但是当我 运行 此代码
{:ok, line} = :gen_tcp.recv(socket, 0)
IO.inspect "************************* #{ inspect line} "
[_server_name, verb, info_path, _version] = String.split(line)
4 个参数的 inspect 看起来没问题
{:http_request, :GET, {:abs_path, \"/gg\"}, {1, 1}}
错误说:
{badarg,[{binary,split,
[{http_request,'GET',{abs_path,<<"/gg">>},{1,1}},
[<<227,128,128>>,
<<226,129,159>>,
<<226,128,169>>,
<<226,128,168>>,
<<226,128,128>>,
<<226,128,129>>,
<<226,128,130>>,
<<226,128,131>>,
<<226,128,132>>,
<<226,128,133>>,
<<226,128,134>>,
<<226,128,136>>,
<<226,128,137>>,
<<226,128,138>>,
<<225,154,128>>,
<<194,133>>,
<<" ">>,<<"\t">>,<<"\n">>,<<"\v">>,<<"\f">>,<<"\r">>],
[global,trim_all]],
[]},
我不知道该行的那些额外参数是什么。
如果我尝试只将线与每种类型绑定,而不会收到我收到的拆分
[_server_name, verb, info_path, _version] = line
{{badmatch,{http_request,'GET',{abs_path,<<"/gg">>},{1,1}}},
如果我读回 :gen_tcp.recv
correctly, you "should" receive a HttpPacket
的文档,在您的情况下似乎是 HttpRequest
。由于请求的解析是为你处理的,你 "should" 可以简单地做:
{:ok, line} = :gen_tcp.recv(socket, 0)
{_server_name, verb, info_path, _version} = line
注意: HttpRepuest
使用 {...}
花括号而不是 [...]
括号。
您好,我正在阅读一个我想获取路径的请求,但是当我 运行 此代码
{:ok, line} = :gen_tcp.recv(socket, 0)
IO.inspect "************************* #{ inspect line} "
[_server_name, verb, info_path, _version] = String.split(line)
4 个参数的 inspect 看起来没问题
{:http_request, :GET, {:abs_path, \"/gg\"}, {1, 1}}
错误说:
{badarg,[{binary,split,
[{http_request,'GET',{abs_path,<<"/gg">>},{1,1}},
[<<227,128,128>>,
<<226,129,159>>,
<<226,128,169>>,
<<226,128,168>>,
<<226,128,128>>,
<<226,128,129>>,
<<226,128,130>>,
<<226,128,131>>,
<<226,128,132>>,
<<226,128,133>>,
<<226,128,134>>,
<<226,128,136>>,
<<226,128,137>>,
<<226,128,138>>,
<<225,154,128>>,
<<194,133>>,
<<" ">>,<<"\t">>,<<"\n">>,<<"\v">>,<<"\f">>,<<"\r">>],
[global,trim_all]],
[]},
我不知道该行的那些额外参数是什么。
如果我尝试只将线与每种类型绑定,而不会收到我收到的拆分
[_server_name, verb, info_path, _version] = line
{{badmatch,{http_request,'GET',{abs_path,<<"/gg">>},{1,1}}},
如果我读回 :gen_tcp.recv
correctly, you "should" receive a HttpPacket
的文档,在您的情况下似乎是 HttpRequest
。由于请求的解析是为你处理的,你 "should" 可以简单地做:
{:ok, line} = :gen_tcp.recv(socket, 0)
{_server_name, verb, info_path, _version} = line
注意: HttpRepuest
使用 {...}
花括号而不是 [...]
括号。