R中URL的最大长度是多少?

时间:2016-07-15 00:27:35

标签: r url curl get http-headers

我在R中构建一个URI,它在运行时生成~40000个字符。

我尝试使用

  • RCurl

  • jsonlite

  • curl

通过bad URL连接时,所有三个都会出现HTTP GET request错误。我没有使用httr,因为它将安装5个额外的dependencies,而我希望在我的R程序中具有最小的依赖性。我不确定即使httr能够处理URL中的这么多字符。

有没有办法可以将其编码/打包到允许的限制或更好的方法/包,可以处理任何类似于py URL的任何长度的urllib

提前致谢。

1 个答案:

答案 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;消息来自服务器,我们对此一无所知。