У меня есть функция, которая использует Drakma для получения веб-страницы:
(defun scrape ()
(let ((cookie-jar (make-instance 'drakma:cookie-jar)))
(drakma:http-request "http://www.example.com/account/login"
:method :post
:parameters '(("username" . "myusername")
("password" . "mypassword"))
:cookie-jar cookie-jar)
(setq body (drakma:http-request "http://www.example.com/"
:cookie-jar cookie-jar))
(format t body)))
Это работает так, как я ожидаю.Однако, если я параметризирую имя пользователя и пароль следующим образом:
(defun scrape (username password)
(let ((cookie-jar (make-instance 'drakma:cookie-jar)))
(drakma:http-request "http://www.example.com/account/login"
:method :post
:parameters '(("username" . username)
("password" . password))
:cookie-jar cookie-jar)
(setq body (drakma:http-request "http://www.example.com/"
:cookie-jar cookie-jar))
(format t body)))
... и вызываю его следующим образом:
(scrape "my_username" "my_password")
... тогда я получаю следующую ошибку:
*** - Don't know what to do with name/value pair ("username" . USERNAME) in multipart/form-data body.
Я новичок в Лиспе, поэтому я на 100% уверен, что упускаю что-то очень простое, чтобы сделать здесь параметры.Например, если я добавлю вызов format в функцию scrape, я увижу, что имя пользователя передается правильно.