我在R中构建一个URI,它在运行时生成~40000个字符。
我尝试使用
RCurl
jsonlite
curl
通过bad URL
连接时,所有三个都会出现HTTP GET request
错误。我没有使用httr
,因为它将安装5个额外的dependencies
,而我希望在我的R程序中具有最小的依赖性。我不确定即使httr
能够处理URL中的这么多字符。
有没有办法可以将其编码/打包到允许的限制或更好的方法/包,可以处理任何类似于py URL
的任何长度的urllib
?
提前致谢。
答案 0 :(得分:4)
这不是RCurl的限制。
让我们制作一个很长的网址并尝试一下:
> s = paste0(rep(letters,2000),collapse="")
> nchar(s)
[1] 52000
这是A-Z的52000个字符。把它贴在URL上:
> 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。
在我们了解更多信息之前,我只能假设错误的网址&#34;消息来自服务器,我们对此一无所知。