使用Drakma为Bing Search API Common Lisp时出错

phl*_*lie 4 lisp common-lisp bing-api drakma

我正在构建一个程序,使用Bing的搜索API和常见的lisp与Drakma库来显示一些结果但由于某种原因在发送更长的查询时出错.它根本不显示任何结果.它适用于较短长度的查询.我正在使用临时帐户来解决这个问题.我有以下代码.

(defun get-rid-of-spaces (var)
 (cl-ppcre:regex-replace-all " " var "%20"))


(defun print-bing (search-term)
  (format nil "https://api.datamarket.azure.com/Bing/Search/v1/Web?Query=%27~a%27&Options=%27DisableLocationDetection%27&$format=json&$top=1" (get-rid-of-spaces search-term)))

(defun drakma-bing (search-term)
 (drakma:http-request (print-bing search-term)
           :basic-authorization
           '("bob.hammerston@mailinator.com" "L2gbaj+s1/KW/+ifAa9HrP0C1/kClpF4InH48Lw8UNc")))

(defun convert-to-string (response)
 (map 'string #'code-char response))
Run Code Online (Sandbox Code Playgroud)

然后我称之为,但它只适用于短搜索术语,我无法弄清楚原因.这不起作用:

(convert-to-string (drakma-bing "what is the largest man in the world"))
Run Code Online (Sandbox Code Playgroud)

但这样做

(convert-to-string (drakma-bing "what is"))
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?

谢谢.

编辑:

我尝试手动编码print-bing函数,而不是使用带有更长字符串的函数,但它仍然不起作用,因此Drakma必定存在错误.我尝试手动将域名输入到Web浏览器中,这样就可以了,这就是为什么我认为错误与Drakma有关.

jki*_*ski 5

您需要使用+而不是%20空格.

(defun get-rid-of-spaces (var)
 (cl-ppcre:regex-replace-all " " var "+"))
Run Code Online (Sandbox Code Playgroud)