3

URLからHTMLコンテンツをダウンロードしようとしていますが成功しません。

URLは次のとおりです。

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

RestClientを使用すると、次のエラーが発生します。

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

Ruby onRailsIRCから助けを得ました。アイデアは、URLの終わりをエスケープすることです。

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

生成されたURLは機能しません。404を取得しています。ただし、ブラウザでは機能します。

誰かがそれを機能させる方法を知っていますか?

4

1 に答える 1

2

URI RFCによると:

他の文字は、ゲートウェイや他のトランスポートエージェントがそのような文字を変更することがあることが知られているため、または区切り文字として使用されるため、除外されます。

unwise = "{" | "}" | 「|」| "\" | "^" | "[" | "]" | 「`」

URI内で適切に表現するには、除外された文字に対応するデータをエスケープする必要があります。

ブラウザの応答またはリンクを処理する機能を信頼することは危険です。標準を適用する代わりに、ページを返すためにできる限りのことを行うため、ページまたはURLが正しく定義されているかどうかにかかわらず、信頼できるソースではありません。

RestClientの応答は、おそらくURIに基づいています。これは、URIを使用してURLの解析をテストしたときに同じエラーを返しました。

エンコードされていない「[」および「]」文字を使用したURLを見たことがありません。

于 2011-02-15T04:39:42.750 に答える