我希望使用drakma获得HTTP请求的重定向url。如果我通过"http://lisp.org/",我想要回"http://lisp.org/index.html“。看一下这些文档,看起来我想要标题作为一个作者,而drakma:http-request应该给我一个作者。
该函数返回七个值--回复正文(但请参见下文)、状态代码作为整数、服务器发送的标头列表,其中,对于每个元素,car (标头的名称)为关键字,cdr (标头的值)为字符串.
当我运行drakma:http-request时,我会得到消息正文,如果我执行(setf drakma:*header-stream* *standard-output*),就会显示标题。当涉及到如何以可用的形式获取标头时,我迷失了方向。
编辑:获得“http://lisp.org/”的重定向url:
(nth-value 3 (drakma:http-request "http://lisp.org/"))
Result: #<PURI:URI http://lisp.org/index.html>发布于 2013-11-26 16:17:34
在Common中返回多个值的函数需要特殊的语法来访问第一个值以外的值;这是一种简便的方法,一方面允许简单的函数调用琐碎地返回“最明显的东西”,另一方面也为需要它的调用者提供更多的信息。
在HTTP-REQUEST的情况下,报头列表是返回的第三个值,因此可以访问:
CL-USER> (nth-value 2 (drakma:http-request "http://lisp.org"))
((:DATE . "Tue, 26 Nov 2013 16:00:41 GMT") (:CONNECTION . "Close")
(:SERVER . "AllegroServe/1.2.65") (:CONTENT-TYPE . "text/html")
(:CONTENT-LENGTH . "459") (:LAST-MODIFIED . "Wed, 26 Oct 2011 02:26:26 GMT"))有关NTH-VALUE和处理多个值所涉及的其他构造的详细信息,请参阅通用Lisp语言7.10.1节。
https://stackoverflow.com/questions/20219289
复制相似问题