#***************************************************************************** # Functions for handling the connection to the controlling webserver. # # Base socketrequest follows code from post on R-help: # http://tolstoy.newcastle.edu.au/R/devel/06/07/6196.html # # PARAMETER: Array|List Arguments (all Entries must be in format "name=val") # RETURN: Array result from webserver # THROWS: Exception Connection Error #***************************************************************************** connectWebserver <- function( call.args ) { host <- "www.imbi.uni-freiburg.de" path <- "/bib/bib.pl" # Parameters for the call. dat <- paste( call.args, collapse="&", sep="" ) len <- length( strsplit(dat,"")[[1]] ) request <- paste( "POST ", path, " HTTP/1.0\nHost: ", host, "\nReferer:\n", "Content-type: application/x-www-form-urlencoded\n", "Content-length: ", len, "\nConnection: Keep-Alive\n\n", dat, sep="" ) sock <- NULL # Needed in catch-Block for disconnect readSock <- "" # Connect. Catch exceptions regarding to connection errors. exception <- try( { sock <- socketConnection( host=host, port=80, server=FALSE, blocking=TRUE ) write( request, sock ) socketSelect( list( sock ) ) readSock <- readLines( sock ) close( sock ) }, silent=FALSE ) if( inherits( exception, "try-error" ) ) { cat( "Error connecting to: ", host, path, dat, "\n" ) # If socket exists, close it. if( sock != NULL ) close( sock ) stop() } return( readSock ) } ##connectWebserver( c( "kat=ben", "cmd=list", "usr=jo", "usr_sel=JO" ) )