I modified request.lisp to let my client do what I needed. Since this is my first time writing a webservice client, I'm not sure if reviewboard or drakma is wrong, or if I misunderstood something. Below is the diff of what I did.
Index: request.lisp
===================================================================
--- request.lisp (revision 4683)
+++ request.lisp (working copy)
@@ -410,7 +410,7 @@
(parameter-error "Don't know how to handle scheme ~S." (uri-scheme uri)))
(when (and close keep-alive)
(parameter-error "CLOSE and KEEP-ALIVE must not be both true."))
- (when (and form-data (not (eq method :post)))
+ (when (and form-data (and (not (eq method :put)) (not (eq method :post))))
(parameter-error "FORM-DATA makes only sense with POST requests."))
(when range
(unless (and (listp range)
@@ -432,7 +432,7 @@
(when (and file-parameters-p (not (eq method :post)))
(parameter-error "Don't know how to handle parameters in ~S, as this is not a POST request."
parameters))
- (when (eq method :post)
+ (when (or (eq method :put) (eq method :post))
;; create content body for POST unless it was provided
(unless content
;; mark PARAMETERS argument as used up, so we don't use it