URL을 작성하는 방법은 무엇입니까?
Url을 작성할 수 있도록 .NET에서 사용할 수있는 도우미 클래스가 있습니까?
예를 들어 사용자가 문자열을 입력하는 경우 :
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를 구문 분석하고 조작하는 데 사용할 수있는 클래스가 있습니까?
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
,하지만 될 수있다 .
보너스 채터
콘솔 애플리케이션.
다른 질문에서
파싱이 필요한 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
사용자 입력으로 오는 일부 문자열이 유효한 URL인지 확인해야하는 경우 다음 Uri.TryCreate
방법을 사용할 수 있습니다 .
Uri uri;
string someUrl = ...
if (!Uri.TryCreate(someUrl, UriKind.Absolute, out uri))
{
// the someUrl string did not contain a valid url
// inform your users about that
}
else
{
var request = WebRequest.Create(uri);
// ... safely proceed with executing the request
}
다른 한편으로 .NET에서 URL을 작성하려는 UriBuilder
경우 해당 목적을 위해 특별히 설계된 클래스가 있습니다. 예를 들어 보겠습니다. 다음 URL을 작성하려고한다고 가정합니다. http://example.com/path?foo=bar&baz=bazinga#some_fragment
여기서 bar
및 bazinga
값은 사용자로부터 제공됩니다.
string foo = ... coming from user input
string baz = ... coming from user input
var uriBuilder = new UriBuilder("http://example.com/path");
var parameters = HttpUtility.ParseQueryString(string.Empty);
parameters["foo"] = foo;
parameters["baz"] = baz;
uriBuilder.Query = parameters.ToString();
uriBuilder.Fragment = "some_fragment";
Uri finalUrl = uriBuilder.Uri;
var request = WebRequest.Create(finalUrl);
... safely proceed with executing the request
UriBuilder 클래스를 사용할 수 있습니다 .
var builder = new UriBuilder(url);
builder.Port = 3333
builder.Scheme = "https";
var result = builder.Uri;
To be valid a URI needs to have the scheme component. "server:8088" is not a valid URI. "http://server:8088" is. See https://tools.ietf.org/html/rfc3986
참고URL : https://stackoverflow.com/questions/20164298/how-to-build-a-url
'development' 카테고리의 다른 글
RejectedExecutionException의 원인은 무엇입니까? (0) | 2020.12.05 |
---|---|
SSDT 및 Visual Studio 2012 데이터베이스 프로젝트로 데이터베이스 배포를 올바르게 관리하는 방법은 무엇입니까? (0) | 2020.12.05 |
React : React가 렌더링 한 DOM을 얼마나 조작 할 수 있습니까? (0) | 2020.12.05 |
소멸자에서 dispose (false)를 호출하는 이유는 무엇입니까? (0) | 2020.12.05 |
동일한 PC에 여러 Firefox 버전 (0) | 2020.12.05 |