【问题标题】:querying freebase api from emacs从 emacs 查询 freebase api
【发布时间】:2013-07-01 13:57:01
【问题描述】:

我有以下 Emacs Lisp,它构建了对 Freebase 的查询。如果我将它生成的 URL 复制并粘贴到我的浏览器中命令行curl 我会得到我期望的结果:

curl -X GET https://www.googleapis.com/freebase/v1/search?query=Oil%20on%20Canvas&filter=(any%20type%3avisual_art%2fvisual_art_medium) ... 这行得通

但我无法在 Emacs 中使其工作:

(require 'url)
(defvar fb-url "https://www.googleapis.com/freebase/v1/search")

(defvar materials-type "(any type:visual_art/visual_art_medium)")

(defun fbquery (type str)
  (let ((url-request-method "GET")


        (url-request-data (concat "?query=" (url-hexify-string str)
                                  "&filter=" (url-hexify-string type))))
    (url-retrieve (concat fb-url)
                  (lambda (status) (switch-to-buffer (current-buffer))))))

(setq url-debug t)

(fbquery materials-type "Oil on Canvas")

我回来了:

HTTP/1.0 400 Bad Request ... Your client has issued a malformed or illegal request. That's all we know..

你能帮忙吗?

【问题讨论】:

    标签: curl emacs freebase


    【解决方案1】:

    似乎问题与变量url-request-data的解释有关

    以下代码对我有用

    (defun fbquery (type str)
      (let ((url-request-method "GET")
            (foo (concat "?query=" (url-hexify-string str)
                         "&filter=" (url-hexify-string type))))
        (url-retrieve (concat fb-url foo)
                      (lambda (status) (switch-to-buffer (current-buffer))))))
    

    请注意,我重命名了该变量(以避免错误)并将其连接到 url

    【讨论】:

    • 谢谢!我以为我什么都试过了,但我猜不是这个组合!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多