3

我正在尝试从 URL 下载 HTML 内容但没有成功。

这是网址:

http://example.com/some_string[value]

使用 RestClient 时出现此错误:

URI::InvalidURIError: bad URI(is not URI?)

我从 Ruby on Rails IRC 获得了一些帮助。想法是转义 URL 的结尾。

$ "http://example.com/" + CGI::escape("some_string[value]")
=> "http://example.com/some_string%5Bvalue%5D"

生成的 URL 不起作用,我得到 404。但它在浏览器中有效。

任何人都知道如何让它工作?

4

1 回答 1

2

根据URI RFC

排除其他字符是因为已知网关和其他传输代理有时会修改此类字符,或者将它们用作分隔符。

不明智=“{”| "}" | “|” | "\" | "^" | "[" | "]" | “`”

对应于排除字符的数据必须转义才能在 URI 中正确表示。

信任浏览器的响应或处理链接的能力是有风险的。他们尽其所能返回页面,而不是执行标准,因此无论页面或 URL 是否正确定义,它们都不是权威来源。

RestClient 的响应可能基于 URI,当我测试使用 URI 解析 URL 时返回相同的错误。

我从未见过使用未编码的“[”和“]”字符的 URL。

于 2011-02-15T04:39:42.750 回答