Выход и загрузка URL с использованием Ruby - PullRequest
3 голосов
/ 15 февраля 2011

Я пытаюсь загрузить содержимое HTML с URL-адреса без успеха.

Вот URL-адрес:

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. Хотя он работает в браузерах.

Кто-нибудь знает, какзаставить его работать?

1 Ответ

2 голосов
/ 15 февраля 2011

Согласно URI RFC :

Другие символы исключены, потому что шлюзы и другой транспорт агенты, как известно, иногда изменяют такие символы, или они используется в качестве разделителей.

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

Данные, соответствующие исключенным символам, должны быть экранированы, чтобы быть правильно представленным в URI.

Доверять ответу браузера или способности обрабатывать ссылку рискованно. Они делают все возможное, чтобы вернуть страницу, вместо обеспечения соблюдения стандартов, поэтому они не являются авторитетными источниками, независимо от того, правильно ли определена страница или URL.

Ответ RestClient, вероятно, основан на URI, которые возвращали ту же ошибку при тестировании парсинга URL с использованием URI.

Я никогда не видел URL, использующий незашифрованные символы "[" и "]".

...