[Bioc-devel] How to handle Empty reply from server from httr package
Martin Morgan
mtmorg@n@b|oc @end|ng |rom gm@||@com
Thu Dec 10 21:10:18 CET 2020
On the one hand, if the error is from curl I think this is the case
url <- "localhost:8000" ## nothing to connect to
tryCatch({
response <- GET(url)
stop_for_status(response)
content(response)
}, error = function(e) {
message(paste(class(e), collapse = " "))
stop("curl example: ", conditionMessage(e))
})
simpleError error condition
Error in value[[3L]](cond) :
curl example: Failed to connect to localhost port 8000: Connection refused
whereas if the server responds with an error then
url <- "http://httpbin.org/status/500"
tryCatch({
response <- GET(url)
stop_for_status(response)
content(response)
}, error=function(e){
message(paste(class(e), collapse = " "))
stop("stop_for_status example: ", conditionMessage(e))
})
http_500 http_error error condition
Error in value[[3L]](cond) :
stop_for_status example: Internal Server Error (HTTP 500).
Noting the different error classes, it looks like
tryCatch({
response <- GET(url)
stop_for_status(response)
content(response)
}, http_error = function(e) {
stop("stop_for_status error: ", conditionMessage(e))
}, error = function(e) {
stop("other error: ", conditionMessage(e))
})
would allow selective handling of each.
It looks like your pseudocode would have handled a curl error, but not an error response from the server, but that's not consistent with what you stated your problem was so maybe I've misunderstood.
Martin
On 12/10/20, 12:16 PM, "Bioc-devel on behalf of Jianhong Ou, Ph.D." <bioc-devel-bounces using r-project.org on behalf of jianhong.ou using duke.edu> wrote:
Hi all,
Sometime my package got "Empty reply from server" error when I using httr package.
The pseudo-code I used to handle error is like this:
library(httr)
APIurl <- "https://www.ebi.ac.uk/proteins/api/features?offset=0&size=-1&reviewed=true&types=DNA_BIND%2CMOTIF%2CDOMAIN&taxid=9606&accession=K7PPA8%2CP04637%2CQ53GA5%2CH2EHT1%2CA0A087X1Q1%2CA0A087WXZ1%2CA0A087WT22"
tryCatch({
response <- GET(featureURL)
if(!http_error(response)){ content <- httr::content(response)}
}, error=function(e){
message(e)
},warning=function(w){
message(w)
},interrupt=function(i){
message(i)
})
But I did not get the error handled. What is the correct way to handle the curl 52 error?
Thank you for your help.
Yours Sincerely,
Jianhong Ou
Email: jianhong.ou using duke.edu
Bioinformatician II
Department of Cell Biology
Duke University School of Medicine
Durham, NC, 27710
Confidentiality Notice:\ This e-mail message, including ...{{dropped:12}}
_______________________________________________
Bioc-devel using r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel
More information about the Bioc-devel
mailing list