Monday, November 08, 2010 at 12:06 AM.
system.verbs.builtins.tcp.httpReadUrl
on httpReadUrl (url, ctFollowRedirects=0, flMessages=true, username="", password="", method="GET", adrcode=nil) { <<Changes <<6/13/10; 1:57:27 AM by DW <<Add optional param to let the user get the HTTP status code. <<Old code <<on httpReadUrl (url, ctFollowRedirects=0, flMessages=true, username="", password="", method="GET") <<Changes <<1/2/09; 12:15:28 PM by DW <<Add optional param to let caller specify the method. <<11/8/07; 12:59:20 PM by DW <<Add optional params for username and password. <<10/17/07; 8:14:24 AM by DW <<Add optional parameter to turn off messages. <<8/26/06; 11:45:46 AM by DW <<Add an optional param, ctFollowRedirects, defaults to 0 (old behavior). <<If non-zero, we follow that many redirects. Recommend a value like 5, if you think a redirect is possible. <<8/25/06; 10:25:12 AM by DW <<Don't give up if the url is missing a trailing slash. <<9/27/99; 8:00:51 PM by DW <<Pass us an http url and we return the result. <<local (urllist) <<try <<urllist = string.urlsplit (url) <<else <<urllist = string.urlsplit (url + "/") <<return (string.httpResultSplit (tcp.httpClient (method, server:urllist [2], path:urllist [3], ctFollowRedirects:ctFollowRedirects, flMessages:flMessages, username:username, password:password))) <<1/2/09; 12:15:28 PM by DW <<Add optional param to let caller specify the method. <<11/8/07; 12:59:20 PM by DW <<Add optional params for username and password. <<10/17/07; 8:14:24 AM by DW <<Add optional parameter to turn off messages. <<8/26/06; 11:45:46 AM by DW <<Add an optional param, ctFollowRedirects, defaults to 0 (old behavior). <<If non-zero, we follow that many redirects. Recommend a value like 5, if you think a redirect is possible. <<8/25/06; 10:25:12 AM by DW <<Don't give up if the url is missing a trailing slash. <<9/27/99; 8:00:51 PM by DW <<Pass us an http url and we return the result. local (urllist); bundle { //set urllist try { urllist = string.urlsplit (url)} else { urllist = string.urlsplit (url + "/")}}; local (httpResult = tcp.httpClient (method, server:urllist [2], path:urllist [3], ctFollowRedirects:ctFollowRedirects, flMessages:flMessages, username:username, password:password)); if adrcode != nil { //6/13/10 by DW adrcode^ = tcp.httpGetStatusCode (httpResult)}; return (string.httpResultSplit (httpResult))} <<bundle //test code <<dialog.alert (httpReadUrl ("http://www.classannual.com:8080/test", 5)) <<dialog.alert (httpReadUrl ("http://www.davosnewbies.com", adrcode:@code)) <<dialog.alert (code) <<dialog.alert (httpReadUrl ("http://www.davosnewbies.com")) <<dialog.alert (httpReadUrl ("http://www.scripting.com/default.html"))
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.