以下是我的 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)))))
基于监视传出请求标头,未设置“接受”标头。我很确定这就是将我重定向到登录页面的原因,因为注释掉的 curl 请求非常有效并且确实设置了 Accept 标头。
话虽这么说,有什么特别是我做错了,和/或有更好的包装器可以在 elisp 中进行大量 REST 调用吗?
谢谢!