2

我不知道如何使用 trivial-http 库将参数传递给 http post 请求。我可以发帖,但我不确定如何传递帖子变量。作为字符流。

http://common-lisp.net/project/trivial-http/user-guide.html#http-post

4

2 回答 2

3

您需要将 post 变量作为 post 请求的内容传入。最常用的方式是 as application/x-www-form-urlencoded,不过multipart/form-data如果需要上传文件也可以使用;有关编码的详细信息,请参见此处

要在 POST 请求中使用 传递信息application/x-www-form-urlencoded,您需要将其作为内容类型传递,并将 url 编码的查询字符串作为内容传递。像这样的东西应该工作:

(thttp:http-post "http://example.com/submit-form" "application/x-www-form-urlencoded"
                 "foo=bar&baz=quux")

如果您需要转义将作为 POST 请求的键或值传入的字符串,则可以使用escape-url-query转义它们以安全地传入 url 编码的正文:

(thttp:http-post "http://example.com/submit-form" "application/x-www-form-urlencoded"
                 (format nil "foo=~a&bar=~a" (thttp:escape-url-query foo) 
                                             (thttp:escape-url-query bar))))
于 2009-03-30T04:36:30.293 回答
1

您应该将 POST 正文编码为字符串。例如,参见http://en.wikipedia.org/wiki/POST_(HTTP)。要从字符串生成字符流,请使用 with-input-from-string 或 make-string-stream。

于 2009-03-30T04:32:29.053 回答