1

我正在尝试使用 URL 发送参数,例如http://localhost:3000/register?name=Chris&job=typist. 我可以将其作为字符串一次性发送httpc:request,但我找不到将查询参数放入 URL 的函数(给定字典)。

我应该使用另一个具有此功能的 HTTP 库吗?

我想给它一个带有哈希/字典/映射的根 URL(在 json {"a" : "b", "c" : "d"} 中),然后将其正确附加到 URL 的末尾。例如,给定"www.facebook.com"[{"a", "b"}, {"c", "d"}]将给"www.facebook.com?a=b&c=d"

这是 Ruby 的一个类似问题:Ruby: How to turn a hash into HTTP parameters?

4

2 回答 2

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"

于 2012-10-17T21:27:18.053 回答
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)

于 2012-09-03T22:01:17.963 回答