Monday, November 08, 2010 at 12:06 AM.
system.verbs.builtins.tcp.httpPost
on httpPost (url, adrparamtable=nil, username="", password="", adrcode=nil) {
<<Changes
<<9/13/09; 9:37:38 AM by DW
<<New optional parameter returns the HTTP result code. Follow redirects.
<<7/15/09; 8:35:03 AM by DW
<<Created. A super-simple interface to HTTP POST. It can get richer with optional parameters, over time, as necessary.
local (body, urllist, type = "application/x-www-form-urlencoded");
bundle { //get body
body = "";
if adrparamtable != nil {
local (adr);
for adr in adrparamtable {
local (s = string.urlencode (nameof (adr^)) + "=" + string.urlencode (adr^));
if sizeof (body) == 0 {
body = s}
else {
body = body + "&" + s}}}};
bundle { //get urllist
try {
urllist = string.urlsplit (url)}
else {
urllist = string.urlsplit (url + "/")}};
local (s = tcp.httpclient ("POST", server:urllist [2], path:urllist [3], datatype:type, data:body, ctFollowRedirects:5, debug:false, username:username, password:password));
if adrcode != nil {
adrcode^ = tcp.httpGetStatusCode (s)};
return (string.httpResultSplit (s))}
<<bundle //test code
<<local (url = "http://rpc.rsscloud.org:5337/rsscloud/postUpdate", params)
<<new (tabletype, @params)
<<params.url = "http://static.lifeliner.org/davewiner/rss.xml"
<<dialog.alert (httpPost (url, @params))
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.