gpt4 book ai didi

rest - 没有通过 url.el 发送额外的 header

转载 作者:太空宇宙 更新时间:2023-11-03 18:54:55 25 4
gpt4 key购买 nike

以下是我的 elisp 代码(凭据显然是假的):

(defvar assembla-username  "foo")                                                                                                                                                                             
(defvar assembla-password "bar")
(defvar tickets-url "http://www.assembla.com/spaces/aWx7Oas2352cwqjQWU/tickets/")

(defvar assembla-auth-header (concat "Basic " (base64-encode-string (concat assembla-username ":" assembla-password))))

; curl -H "Accept: application/xml" -u "foo:bar" http://www.assembla.com/spaces/aWx7Oas2352cwqjQWU/tickets/
(defun get-tickets()
(interactive)
(let ((url-request-extra-headers
'(("Accept" . "application/xml")
("Authorization" . assembla-auth-header)))))
(url-retrieve tickets-url (lambda (status)
(switch-to-buffer (current-buffer)))))

根据监视传出请求 header ,未设置“接受” header 。我很确定这就是将我重定向到登录页面的原因,因为注释掉的 curl 请求完美运行并且确实设置了 Accept header 。

话虽这么说,有没有我特别做错的地方,和/或是否有更好的包装器可以在 elisp 中进行大量 REST 调用?

谢谢!

最佳答案

您没有评估您的 assembla-auth-header 变量,您在 let 之外调用了 url-retrieve,此时 url-request-headers 已经恢复到原来的状态。您似乎还需要使用 url-mime-accept-string 而不是将其添加到额外的 header 中。

(defun get-tickets()
(interactive)
(let ((url-mime-accept-string "application/xml")
(url-request-extra-headers
`(("Authorization" . ,assembla-auth-header))))
(url-retrieve tickets-url (lambda (status)
(switch-to-buffer (current-buffer))))))

我建议尝试这样的事情,看看它是否至少正确地传递了 AcceptAuthorization header 。

关于rest - 没有通过 url.el 发送额外的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11622837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com