[drakma-devel] Error while trying to POST some JSON data
Peter Stirling
peter at pjstirling.plus.com
Fri Mar 22 12:57:15 UTC 2013
I was getting this error too, I reverted to the previous version of
cl+ssl in quicklisp by putting it in the local-projects directory.
I've been meaning to report another problem I've had with the new
version of drakma, it seems that when I POST login details to a site
that I'm using it replies with a redirect, and then drakma tries to POST
the login details to the redirected page rather than accessing it with a
GET. I'll try and make a test case sometime this weekend.
On 21/03/13 21:41, Peter Kuchta wrote:
> Hi everybody,
>
> I'm trying to POST some JSON data to a web service:
>
> (ql:quickload :st-json)
> (ql:quickload :cl-json)
> (ql:quickload :drakma)
>
> (defvar *rc* (merge-pathnames (user-homedir-pathname) ".apirc"))
>
> (defvar *user*
> (with-open-file (s *rc*)
> (st-json:read-json s)))
>
> (defvar api-url (st-json:getjso "url" *user*))
> (defvar api-key (st-json:getjso "key" *user*))
> (defvar api-email (st-json:getjso "email" *user*))
>
> (setf drakma:*header-stream* *standard-output*)
>
> (defvar *req* '(("dataset" . "tigge")
> ("step" . "24")
> ("date" . "20071001")
> ("time" . "00")
> ("origin" . "all")))
>
> (format t "json:~S~%" (json:encode-json-to-string *req*))
>
> (defun retrieve (api request)
> (let* ((cookie-jar (make-instance 'drakma:cookie-jar))
> (extra-headers (list (cons "From" api-email)
> (cons "X-API-KEY" api-key)))
> (url (concatenate 'string api-url api "/requests"))
> (stream (drakma:http-request url
> :additional-headers extra-headers
> :accept "application/json"
> :method :post
> :content-type "application/json"
> :external-format-out :utf-8
> :external-format-in :utf-8
> :redirect 100
> :cookie-jar cookie-jar
> :content (json:encode-json-to-string
> request)
> :want-stream t)))
> (st-json:read-json stream)))
>
> (retrieve "/datasets/tigge" *req*)
>
> Unfortunately, I get an error, although the data seems to be encoded
> OK to JSON and the headers generated by drakma too, I think.
> Apparently something is wrong with the :content (the list of integers
> in the errors message is just the list of ASCII codes of the JSON
> encoded data).
>
> json:"{\"dataset\":\"tigge\",\"step\":\"24\",\"number\":\"all\",\"levtype\":\"sl\",\"date\":\"20071001\",\"time\":\"00\",\"origin\":\"all\",\"type\":\"pf\",\"param\":\"tp\",\"area\":\"70\\/-130\\/30\\/-60\",\"grid\":\"2\\/2\",\"target\":\"data.grib\"}"
>
> POST /v1/datasets/tigge/requests HTTP/1.1
> Host: api.service.int <http://api.service.int>
> User-Agent: Drakma/1.3.0 (SBCL 1.1.5; Darwin; 12.2.0;
> http://weitz.de/drakma/)
> Accept: application/json
> Connection: close
> From: me at gmail.com <mailto:me at gmail.com>
> X-API-KEY: 19a0edb6d8d8dda1e6a3b21223e4f86a
> Content-Type: application/json
> Content-Length: 193
>
>
> debugger invoked on a SIMPLE-TYPE-ERROR:
> The value of CL+SSL::THING is #(123 34 100 97 116 97 115 101 116
> 34 58 34
> ...), which is not of type (SIMPLE-ARRAY
> (UNSIGNED-BYTE 8)
> (*)).
>
> Any idea what's wrong with this code? Many thanks in advance.
>
> Best regards,
> Piotr
>
>
> _______________________________________________
> drakma-devel mailing list
> drakma-devel at common-lisp.net
> http://lists.common-lisp.net/cgi-bin/mailman/listinfo/drakma-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/drakma-devel/attachments/20130322/9bb93177/attachment.html>
More information about the Drakma-devel
mailing list