這不是RCurl的限制。
讓我們做一個長的URL和嘗試:
> s = paste0(rep(letters,2000),collapse="")
> nchar(s)
[1] 52000
這是A-Z的52000個字符。它貼在一個網址:
> url = paste0("http://www.omegahat.net/RCurl/",s,sep="")
> nchar(url)
[1] 52030
> substr(url, 1, 40)
[1] "http://www.omegahat.net/RCurl/abcdefghij"
現在嘗試,並得到它:
> txt = getURL(url)
> txt
[1] "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>414 Request-URI Too Large</title>\n</head><body>\n<h1>Request-URI Too Large</h1>\n<p>The requested URL's length exceeds the capacity\nlimit for this server.<br />\n</p>\n</body></html>\n"
>
這是來自服務器的正確反應。服務器認爲它是一個長URL,返回了414錯誤,並證明RCurl可以請求超過40,000個字符的URL。
直到我們知道更多,我只能假設「壞URL」消息來自服務器,我們什麼都不知道。
從這些答案大約2000個字符看起來像一個最大值。請參閱以下相關問題:http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers,http://stackoverflow.com/questions/2659952 /最大長度的-HTTP-GET請求。 – Dave2e
看着'jsonlite :: fromJSON',你會發現它檢查'txt'(你的情況是一個URL)是不是'<1000「字節'(['jsonlite :: fromJSON' source code](https:// github.com/jeroenooms/jsonlite/blob/master/R/fromJSON.R)) – SymbolixAU
那麼,除了將這個'GET'請求轉換爲'POST'請求之外,是否還有辦法通過R訪問長URL?我認爲'HTTP'協議的全部目的是失敗的? – user6591903