From: Wayne R. <goo...@ya...> - 2004-08-03 13:37:10
|
Ok, can't attach files to dev list either. ;Try my inefficient URL reader! Calls java libraries. ;use (print-webpage "http://www.msn.com:80/") or ;(return-webpage "http://www.msn.com:80/") to return it ;in a string. -- URLstring.lisp (defun java-object-class (obj-instance) "returns the Class name string of a given object reference, including primitives and arrays" (jclass-name (jobject-class obj-instance))) (defun bytes-string (byte-array) "convert byte array to a String object" (jnew (jconstructor "java.lang.String" "[B") byte-array)) (defun print-webpage (URL-STRING) "print the data returned from URL-STRING to the standard out" (LET ((URL (JNEW (JCONSTRUCTOR "java.net.URL" "java.lang.String") URL-STRING)) istream inreader bufferedin) (unless (null (setq ISTREAM (JCALL (JMETHOD "java.net.URL" "openStream") URL))) (setq INREADER (JNEW (JCONSTRUCTOR "java.io.InputStreamReader" "java.io.InputStream") ISTREAM) BUFFEREDIN (JNEW (JCONSTRUCTOR "java.io.BufferedReader" "java.io.Reader") INREADER)) (DO ((STR "" (JCALL (JMETHOD "java.io.BufferedReader" "readLine") BUFFEREDIN))) ((NULL STR) 'END-OF-STREAM) (format t "~A~%" STR))) (values))) (defun return-webpage (URL-STRING) "return the data from URL-STRING in a String" (LET* ((url (JNEW (JCONSTRUCTOR "java.net.URL" "java.lang.String") URL-STRING)) (data (jnew-array "byte" 1)) (inputstream-read (jmethod "java.io.InputStream" "read" "[B")) (stringbuffer-append (jmethod "java.lang.StringBuffer" "append" "java.lang.String")) (instream (jcall (jmethod "java.net.URL" "openStream") url)) (buffer (jnew (jconstructor "java.lang.StringBuffer")))) (do ((len (jcall inputstream-read instream data)(jcall inputstream-read instream data))) ((= len -1) (jcall (jmethod "java.lang.StringBuffer" "toString") buffer)) (jcall stringbuffer-append buffer (bytes-string data))))) --------------------------------- Do you Yahoo!? Yahoo! Mail is new and improved - Check it out! |
From: Andras S. <as...@ma...> - 2004-08-03 15:59:17
|
Using jfli (available from http://www.math.bme.hu/~asimon/lisp/jfli-abcl.lisp and documented in http://jfli.sf.net) you can do it this way: (use-package :jfli) (def-java-class "java.net.URL") (def-java-class "java.io.InputStreamReader") (def-java-class "java.io.BufferedReader") (use-package "java.net") (use-package "java.io") (defun print-webpage (url-string) "print the data returned from URL-STRING to the standard out" (let ((url (url.new url-string)) istream inreader bufferedin) (unless (null (setq istream (url.openstream url))) (setq inreader (inputstreamreader.new istream) bufferedin (bufferedreader.new inreader)) (do ((str "" (bufferedreader.readline bufferedin))) ((null str) 'end-of-stream) (format t "~A~%" str))) (values))) This has the benefit that it will also work in LispWorks. Andras On Tue, 3 Aug 2004, Wayne Rogers wrote: > Ok, can't attach files to dev list either. > > ;Try my inefficient URL reader! Calls java libraries. > > ;use (print-webpage "http://www.msn.com:80/") or > ;(return-webpage "http://www.msn.com:80/") to return > it ;in a string. > > > -- URLstring.lisp > > (defun java-object-class (obj-instance) > "returns the Class name string of a given object reference, including primitives and arrays" > (jclass-name (jobject-class obj-instance))) > (defun bytes-string (byte-array) > "convert byte array to a String object" > (jnew (jconstructor "java.lang.String" "[B") byte-array)) > (defun print-webpage (URL-STRING) > "print the data returned from URL-STRING to the standard out" > (LET ((URL (JNEW (JCONSTRUCTOR "java.net.URL" "java.lang.String") URL-STRING)) > istream inreader bufferedin) > > (unless (null (setq ISTREAM (JCALL (JMETHOD "java.net.URL" "openStream") URL))) > (setq INREADER (JNEW (JCONSTRUCTOR "java.io.InputStreamReader" "java.io.InputStream") ISTREAM) > BUFFEREDIN (JNEW (JCONSTRUCTOR "java.io.BufferedReader" "java.io.Reader") INREADER)) > (DO ((STR "" (JCALL (JMETHOD "java.io.BufferedReader" "readLine") BUFFEREDIN))) > ((NULL STR) 'END-OF-STREAM) > (format t "~A~%" STR))) > (values))) > > (defun return-webpage (URL-STRING) > "return the data from URL-STRING in a String" > (LET* ((url (JNEW (JCONSTRUCTOR "java.net.URL" "java.lang.String") URL-STRING)) > (data (jnew-array "byte" 1)) > (inputstream-read (jmethod "java.io.InputStream" "read" "[B")) > (stringbuffer-append (jmethod "java.lang.StringBuffer" "append" "java.lang.String")) > (instream (jcall (jmethod "java.net.URL" "openStream") url)) > (buffer (jnew (jconstructor "java.lang.StringBuffer")))) > > (do ((len (jcall inputstream-read instream data)(jcall inputstream-read instream data))) > ((= len -1) (jcall (jmethod "java.lang.StringBuffer" "toString") buffer)) > > (jcall stringbuffer-append buffer (bytes-string data))))) > > > > --------------------------------- > Do you Yahoo!? > Yahoo! Mail is new and improved - Check it out! |