Ошибка использования Drakma для Bing Search API Common Lisp
Я создаю программу, которая использует API поиска Bing и общий 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))
А потом я звоню, но это работает только для коротких поисковых терминов, и я не могу понять, почему. Это не работает:
(convert-to-string (drakma-bing "what is the largest man in the world"))
Но это делает
(convert-to-string (drakma-bing "what is"))
Есть идеи почему?
Благодарю.
Редактировать:
Я попытался закодировать функцию print-bing вручную вместо использования этой функции с более длинной строкой, и она все еще не работает, поэтому должна быть ошибка с Drakma. Я попытался ввести домен в веб-браузер вручную, и он работает, поэтому я думаю, что ошибка с Дракмой.
1 ответ
Вам нужно использовать +
вместо %20
для пробелов.
(defun get-rid-of-spaces (var)
(cl-ppcre:regex-replace-all " " var "+"))