我正在尝试使用网址发送参数,例如http://localhost:3000/register?name=Chris&job=typist
。我可以将所有内容一次性发送为httpc:request
的字符串,但我找不到将查询参数放入URL(给定字典)的函数。
我应该使用另一个具有此功能的HTTP库吗?
我想给它一个带有hash / dictonary / map的根URL(在json {“a”:“b”,“c”:“d”}),然后将它正确地附加到结尾网址。例如,给定"www.facebook.com"
和[{"a", "b"}, {"c", "d"}]
会给"www.facebook.com?a=b&c=d"
。
以下是Ruby的类似问题:Ruby: How to turn a hash into HTTP parameters?
答案 0 :(得分:0)
我不确定完全你的意思是“哈希”,但是如果你想从元组构造一个查询字符串,这是一个相当严格的任务。
我不熟悉httpc中提供所需功能的方法。您可以非常轻松地围绕request / 4编写包装器,类似于此。
(这个程序是匆匆构建的,可以给你一个想法,原谅任何错误)。
request(Method, Domain, {Path, Query, Fragment}, HTTPOptions, Options) ->
QueryString = lists:flatten([Path,
case Query of "" -> ""; _ -> [$? | Query] end,
case Fragment of "" -> ""; _ -> [$# | Fragment] end]);
Request = concat(Domain, QueryString);
httpc:request(Method, {Request, []}, HTTPOptions, Options).
您可以像
一样调用它 request(get, "http://www.example.com", {"/path", "", "bar?baz}, HTTPOptions, Options)
答案 1 :(得分:0)
尝试此功能
test(URL,QP)->URL++"?"++loop(QP,[]).
loop([{A,B}],QP)->QP++A++"="++B;
loop([{A,B}|T],QP)->loop(T,QP++A++"="++B++"&").
致电test("www.facebook.com",[{"a", "b"}, {"c", "d"}]).
它返回"www.facebook.com?a=b&c=d"
。