我正在构建一个程序,它使用Bing的搜索API和Drakma库中常见的lisp来显示一些结果,但是由于某些原因,在发送更长的查询时出现了错误,它根本不显示任何结果。它适用于较短长度的查询。我正在用临时帐户来回答这个问题。我有下面的代码。
(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))然后我称之为,但它只适用于简短的搜索条件,我不知道为什么。这不管用:
(convert-to-string (drakma-bing "what is the largest man in the world"))但这确实是
(convert-to-string (drakma-bing "what is"))知道为什么吗?
谢谢。
编辑:
我尝试用手工编码print函数,而不是用更长的字符串来使用这个函数,但是它仍然不能工作,所以Drakma肯定有一个错误。我试着用手在web浏览器中输入域,所以我认为这个错误与Drakma有关。
发布于 2016-01-24 08:33:57
对于空格,您需要使用+而不是%20。
(defun get-rid-of-spaces (var)
(cl-ppcre:regex-replace-all " " var "+"))https://stackoverflow.com/questions/34969298
复制相似问题