Hi!
On Sun, 24 Sep 2006 09:41:04 +0300, "Ivan Toshkov" ivan@toshkov.org wrote:
First of all, thank you Edi Weitz for your excellent libraries. I find them simple to use, well thought out, and with excellent documentation. Again, a big thank you.
You're welcome... :)
And thanks to whoever is working on porting Drakma.
I think that's me... :)
I found a couple of problems:
Drakma cannot receive cookies from localhost. After a short investigation I found that the problem was with the method VALID-COOKIE-DOMAIN-P, which insist to have at least 2 dots in the normalized domain name. As a workaround I used 127.0.0.1 instead of localhost.
Thanks for the report, I've released a new version (0.4.4) which fixes this.
The other problem is with an incomplete implementation of flexi-streams under CMUCL. The call:
(drakma:http-request "http://www.google.com/" :parameters '(("q" . "something")))
works normally, but
(drakma:http-request "http://www.google.com/search" :parameters '(("q" . "something")))
gives:
No matching method for the generic function #<STANDARD-GENERIC-FUNCTION INPUT-STREAM-P (2) {58E17501}>, when called with arguments (#<FLEXI-STREAMS::VECTOR-OUTPUT-STREAM {5834F8FD}>). [Condition of type PCL::NO-APPLICABLE-METHOD-ERROR]
0: ("DEFMETHOD NO-APPLICABLE-METHOD (T)" #<#1=unused-arg> #<#1#> #<STANDARD-GENERIC-FUNCTION INPUT-STREAM-P (2) {58E17501}> (#<FLEXI-STREAMS::VECTOR-OUTPUT-STREAM {5834F8FD}>)) 1: (FLEXI-STREAMS:MAKE-FLEXI-STREAM #<FLEXI-STREAMS::VECTOR-OUTPUT-STREAM {5834F8FD}> :EXTERNAL-FORMAT :LATIN-1) 2: (FLEXI-STREAMS:STRING-TO-OCTETS "q" :EXTERNAL-FORMAT :LATIN-1 :START ...) 3: (DRAKMA::URL-ENCODE "q" :LATIN-1) 4: (DRAKMA::ALIST-TO-URL-ENCODED-STRING (("q" . "something")) :LATIN-1) 5: (DRAKMA:HTTP-REQUEST #<URI http://www.google.com/search%3E :PARAMETERS (("q" . "something")))
I don't have time at the moment to see if anything else is missing and to give patches. For this case though the workaround seems to be as simple as:
(defmethod input-stream-p ((s flexi-streams::vector-output-stream)) nil)
If I understand the Gray streams proposal correctly, this isn't an incompleteness in FLEXI-STREAMS, but a problem in CMUCL's Gray streams implementation. Are you using the newest version of CMUCL? Have you asked on their mailing list? (It is also not clear to me why the problem only surfaces with the longer URL because URL-ENCODE has to be called in both cases.)
Cheers, Edi.