diff --git a/R/whatNWISsites.R b/R/whatNWISsites.R index 6870bc15e5ea22f2c05799e1d2cb12fac38a239b..f331a806caf896ef279129b03d5963218ecf3f2e 100644 --- a/R/whatNWISsites.R +++ b/R/whatNWISsites.R @@ -41,27 +41,22 @@ whatNWISsites <- function(...){ urlCall <- paste(baseURL, urlCall,sep = "") - if(url.exists(urlCall)){ + h <- basicHeaderGatherer() + + possibleError <- tryCatch({ h <- basicHeaderGatherer() - doc = tryCatch({ - returnedDoc <- getURI(urlCall, headerfunction = h$update) - if(h$value()["Content-Type"] == "text/xml;charset=UTF-8"){ - xmlTreeParse(returnedDoc, getDTD = FALSE, useInternalNodes = TRUE) - } else { - message(paste("URL caused an error:", urlCall)) - message("Content-Type=",h$value()["Content-Type"]) - return(NA) - } - - }, warning = function(w) { - message(paste("URL caused a warning:", urlCall)) - message(w) - }, error = function(e) { - message(paste("URL does not seem to exist:", urlCall)) - message(e) - return(NA) - }) - + returnedDoc <- getURI(urlCall, headerfunction = h$update) + }, warning = function(w) { + warning(w, "with url:", urlCall) + }, error = function(e) { + stop(e, "with url:", urlCall) + }) + + headerInfo <- h$value() + + if (headerInfo['status'] == "200"){ + + doc <- xmlTreeParse(returnedDoc, getDTD = FALSE, useInternalNodes = TRUE) doc <- xmlRoot(doc) numChunks <- xmlSize(doc) for(i in 1:numChunks){ @@ -91,6 +86,7 @@ whatNWISsites <- function(...){ return(retval) } else { - message("URL caused an error:", urlCall) + stop("Status:", headerInfo['status'], ": ", headerInfo['statusMessage'], "\nFor: ", urlCall) } + }