用 cowboy 作為網路請求的容器,其中用了對 http 的 POST 請求處理,由於資料較少,找了很久才在外國網站找到瞭解決的好方法。(其實只是一個方法,自己看源碼看了很久,英文不太好,所以找不到相應的處理方法是那個,一開始儘管拿二進位進行匹配,感覺笨死了)。
下面一個小例子:
hhh.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>hhhh</title></head><body><form action="http://localhost:8080/" method="POST"><br><input type="test" name="name"/>name<br><input type="test" name="passwd"/>passwd<br><input type="submit" value="Submit"/><br></form></body></html>
hhh.erl
-module(hhh).-behavior(cowboy_http_handler).-export([init/3, handle/2, terminate/2]).%%%%API%%init({_Any, http}, Req, [])-> {ok, Req, undefined}.handle(Req,State)-> %%% %%% 在POST請求中取出內容 %%% 使用者名稱NAME %%% 密碼 PASSWD {[{_N,Name},{_P,Passwd}],_Req}=cowboy_http_req:body_qs(Req), io:format(" name is :~ts passwd is : ~ts ~n",[Name,Passwd]), {ok, _Req} = cowboy_http_req:reply(200, [],<<"ok">>, Req), {ok, _Req, State}. terminate(_Req,_State)-> ok.
通過一個cowboy_http_req:body_qs(Req)函數,就可以把body 裡面通過POST傳過來的值了,在通過匹配拿出想要的資訊。
因為此函數返回的格式是: {list({binary(), binary() | true}), #http_req{}}
即 {[{"name","頁面填的name"},{"passwd","頁面填的passwd"}],Req1}
拿到資訊之後就可以安心開展下來的業務了
隨便附上匹配二進位的代碼:
<<First:1/binary,Second:1/binary,Last:2/binary>>=<<"fuck">>First=fSecond=uLast=ck
希望有所協助 =。=