Есть ли какие-либо вспомогательные классы, доступные в .NET, чтобы я мог создать Url?
Например, если пользователь вводит строку:
stackoverflow.com
и я пытаюсь передать это на HttpWebRequest
:
WebRequest.CreateHttp(url);
Это не сработает, потому что это не действительный url (у него нет префикса).
Я хочу, чтобы можно было проанализировать частичный URL-адрес пользователя:
Uri uri = new Uri(url);
а затем исправить недостающие фрагменты:
if (uri.Port == 0)
uri.Port = 3333;
if (uri.Scheme == "")
uri.Scheme = "https";
Имеет ли .NET какие-либо классы, которые могут использоваться для анализа и управления Uri's?
Класс UriBuilder не может выполнять задание
Значение, введенное пользователем (например, stackoverflow.com:3333
), действительно; Мне просто нужен класс, чтобы разобрать его. Я попытался использовать класс UriBuilder
:
UriBuilder uriBuilder = new UriBuilder("stackoverflow.com:3333");
К сожалению, класс UriBuilder не может обрабатывать URI:
- uriBuilder.Path =
3333
- uriBuilder.Port =
-1
- uriBuidler.Scheme =
stackoverflow.com
Мне нужен класс, который может понять host:port
, что особенно важно, когда это не особенно http
, но может быть.
Бонус Chatter
Консольное приложение.
Из другого вопроса
Некоторые примеры URL, требующие разбора:
-
server:8088
-
server:8088/func1
-
server:8088/func1/SubFunc1
-
http://server
-
http://server/func1
-
http://server/func/SubFunc1
-
http://server:8088
-
http://server:8088/func1
-
http://server:8088/func1/SubFunc1
-
magnet://server
-
magnet://server/func1
-
magnet://server/func/SubFunc1
-
magnet://server:8088
-
magnet://server:8088/func1
-
magnet://server:8088/func1/SubFunc1
Формат Url:
foo://example.com:8042/over/there?name=ferret#nose
\_/ \_________/ \__/\_________/\__________/ \__/
| | | | | |
scheme host port path query fragment