Một lựa chọn cấp cao hơn để sử dụng url-http-end-of-headers
, nhưng không có giấy tờ, là url-insert-file-contents
:
(with-temp-buffer
(url-insert-file-contents
"https://api.stackexchange.com/2.2/questions/12464?site=emacs")
(json-parse-buffer :object-type 'alist))
hoặc tương đương, trước Emacs 27 được biên dịch với hỗ trợ JSON gốc:
(require 'json)
(with-temp-buffer
(url-insert-file-contents
"https://api.stackexchange.com/2.2/questions/12464?site=emacs")
(let ((json-false :false))
(json-read)))
Những kết quả này trong:
((items .
[((tags .
["url" "http"])
(owner
(reputation . 10741)
(user_id . 227)
(user_type . "registered")
(accept_rate . 89)
(profile_image . "https://i.stack.imgur.com/ebO5J.jpg?s=128&g=1")
(display_name . "lunaryorn")
(link . "https://emacs.stackexchange.com/users/227/lunaryorn"))
(is_answered . t)
(view_count . 867)
(accepted_answer_id . 29798)
(answer_count . 3)
(score . 4)
(last_activity_date . 1517363132)
(creation_date . 1431861037)
(question_id . 12464)
(link . "/emacs/12464/go-to-body-after-url-retrieve-synchronously")
(title . "Go to body after url-retrieve-synchronously"))])
(has_more . :false)
(quota_max . 300)
(quota_remaining . 276))
Chức năng url-insert-file-contents
kết thúc tốt đẹp các chức năng tốt hơn các tài liệu url-insert-buffer-contents
và url-insert
và do đó đi kèm với các goodies sau:
- Tự động tải theo mặc định.
- Tồn tại ít nhất là từ thời Emacs 21.
- Xử lý lỗi phản hồi HTTP đơn giản thông qua
url-http-response-status
.
- Giải mã dữ liệu.
FWIW, nó cũng đi kèm với sự đảm bảo được sử dụng bởi lisp/emacs-lisp/package.el
.
url-http-end-of-headers
là thích hợp hơn với phương pháp này. Tôi đã thực sự hy vọng về một cái gì đó tương tựurl-http-goto-body
:(