我不知道如何使用 trivial-http 库将参数传递给 http post 请求。我可以发帖,但我不确定如何传递帖子变量。作为字符流。
http://common-lisp.net/project/trivial-http/user-guide.html#http-post
我不知道如何使用 trivial-http 库将参数传递给 http post 请求。我可以发帖,但我不确定如何传递帖子变量。作为字符流。
http://common-lisp.net/project/trivial-http/user-guide.html#http-post
您需要将 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))))
您应该将 POST 正文编码为字符串。例如,参见http://en.wikipedia.org/wiki/POST_(HTTP)。要从字符串生成字符流,请使用 with-input-from-string 或 make-string-stream。