다음을 통해 공유


HttpRequestHeaderCollection 클래스

정의

HTTP 요청과 연결된 HTTP 헤더의 컬렉션을 제공합니다.

public ref class HttpRequestHeaderCollection sealed : IIterable<IKeyValuePair<Platform::String ^, Platform::String ^> ^>, IMap<Platform::String ^, Platform::String ^>, IStringable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class HttpRequestHeaderCollection final : IIterable<IKeyValuePair<winrt::hstring, winrt::hstring const&>>, IMap<winrt::hstring, winrt::hstring const&>, IStringable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class HttpRequestHeaderCollection final : IIterable<IKeyValuePair<winrt::hstring, winrt::hstring const&>>, IMap<winrt::hstring, winrt::hstring const&>, IStringable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class HttpRequestHeaderCollection : IDictionary<string,string>, IEnumerable<KeyValuePair<string,string>>, IStringable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class HttpRequestHeaderCollection : IDictionary<string,string>, IEnumerable<KeyValuePair<string,string>>, IStringable
Public NotInheritable Class HttpRequestHeaderCollection
Implements IDictionary(Of String, String), IEnumerable(Of KeyValuePair(Of String, String)), IStringable
상속
Object Platform::Object IInspectable HttpRequestHeaderCollection
특성
구현
IDictionary<String,String> IMap<Platform::String,Platform::String> IMap<winrt::hstring,winrt::hstring> IIterable<IKeyValuePair<K,V>> IEnumerable<KeyValuePair<K,V>> IEnumerable<KeyValuePair<String,String>> IIterable<IKeyValuePair<Platform::String,Platform::String>> IIterable<IKeyValuePair<winrt::hstring,winrt::hstring>> IStringable

Windows 요구 사항

디바이스 패밀리
Windows 10 (10.0.10240.0에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)

예제

다음 샘플 코드에서는 HttpRequestHeaderCollection 개체의 속성을 사용하여 HttpRequestMessage 개체에서 요청 헤더를 가져와서 설정하는 메서드를 보여 줍니다. 또한 Windows.Web.Http.Headers 네임스페이스에는 유효성 검사를 사용하여 헤더를 가져와서 설정하는 데 사용할 수 있는 특정 HTTP 헤더에 대한 강력한 형식의 헤더 컬렉션 및 값 클래스가 많이 있습니다.

using System;
using System.Collections.Generic;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.Web.Http;
using Windows.Web.Http.Headers;

        public void DemonstrateHeaderRequest()
        {
            DemonstrateHeaderRequestAccept();
            DemonstrateHeaderRequestAcceptEncoding();
            DemonstrateHeaderRequestAcceptLanguage();
            DemonstrateHeaderRequestAuthorization();
            DemonstrateHeaderRequestCacheControl();
            DemonstrateHeaderRequestConnection();
            DemonstrateHeaderRequestCookie();
            DemonstrateHeaderRequestDate();
            DemonstrateHeaderRequestFrom();
            DemonstrateHeaderRequestHost();
            DemonstrateHeaderRequestIfModifiedSince();
            DemonstrateHeaderRequestIfUnmodifiedSince();
            DemonstrateHeaderRequestMaxForwards();
            DemonstrateHeaderRequestProxyAuthorization();
            DemonstrateHeaderRequestReferer();
            DemonstrateHeaderRequestUserAgent();
        }

        public void DemonstrateHeaderRequestAccept()
        {
            var request = new HttpRequestMessage();
            bool parsedOk = false;

            // Set the header with a string.
            parsedOk = request.Headers.Accept.TryParseAdd ("audio/*");
            parsedOk = request.Headers.Accept.TryParseAdd ("audio/*; q=0.2");
            parsedOk = request.Headers.Accept.TryParseAdd ("audio/*; q=0.4; mysetting=myvalue");

            // Set the header with a strong type.
            request.Headers.Accept.Add(new HttpMediaTypeWithQualityHeaderValue("audio/*", .6));

            // Get the strong type out
            foreach (var value in request.Headers.Accept)
            {
                System.Diagnostics.Debug.WriteLine("One of the Accept values: {0}={1}", value.MediaType, value.Quality);
            }

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The Accept ToString() results: {0}", request.Headers.Accept.ToString());
        }

        public void DemonstrateHeaderRequestAcceptEncoding()
        {
            var request = new HttpRequestMessage();
            bool parsedOk = false;

            // Set the header with a string.
            parsedOk = request.Headers.AcceptEncoding.TryParseAdd("compress");
            parsedOk = request.Headers.AcceptEncoding.TryParseAdd("gzip;q=1.0");

            // Set the header with a strong type.
            request.Headers.AcceptEncoding.Add(new HttpContentCodingWithQualityHeaderValue("*", 0));

            // Get the strong type out
            foreach (var value in request.Headers.AcceptEncoding)
            {
                System.Diagnostics.Debug.WriteLine("One of the AcceptEncoding values: {0}={1}", value.ContentCoding, value.Quality);
            }

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The AcceptEncoding ToString() results: {0}", request.Headers.AcceptEncoding.ToString());
        }

        public void DemonstrateHeaderRequestAcceptLanguage()
        {
            var request = new HttpRequestMessage();
            bool parsedOk = false;

            // Set the header with a string.
            parsedOk = request.Headers.AcceptLanguage.TryParseAdd("da");
            parsedOk = request.Headers.AcceptLanguage.TryParseAdd("en-gb;q=0.8");

            // Set the header with a strong type.
            request.Headers.AcceptLanguage.Add(new HttpLanguageRangeWithQualityHeaderValue("en", .7));

            // Get the strong type out
            foreach (var value in request.Headers.AcceptLanguage)
            {
                System.Diagnostics.Debug.WriteLine("One of the AcceptLanguage values: {0}={1}", value.LanguageRange, value.Quality);
            }

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The AcceptLanguage ToString() results: {0}", request.Headers.AcceptLanguage.ToString());
        }

        public void DemonstrateHeaderRequestAuthorization()
        {
            var request = new HttpRequestMessage();

            // Set the header with a strong type.
            string username = "user";
            string password = "password";
            var buffer = Windows.Security.Cryptography.CryptographicBuffer.ConvertStringToBinary (username + ":" + password, Windows.Security.Cryptography.BinaryStringEncoding.Utf8);
            string base64token = Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(buffer);
            request.Headers.Authorization = new HttpCredentialsHeaderValue("Basic", base64token);


            // Get the strong type out
            System.Diagnostics.Debug.WriteLine("One of the Authorization values: {0}={1}", 
                request.Headers.Authorization.Scheme,
                request.Headers.Authorization.Token);

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The Authorization ToString() results: {0}", request.Headers.Authorization.ToString());
        }

        public void DemonstrateHeaderRequestCacheControl()
        {
            var request = new HttpRequestMessage();
            bool parsedOk = false;

            // Set the header with a string.
            parsedOk = request.Headers.CacheControl.TryParseAdd("no-store");

            // Set the header with a strong type.
            request.Headers.CacheControl.Add(new HttpNameValueHeaderValue("max-age", "10"));

            // Get the strong type out
            foreach (var value in request.Headers.CacheControl)
            {
                System.Diagnostics.Debug.WriteLine("One of the CacheControl values: {0}={1}", value.Name, value.Value);
            }

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The CacheControl ToString() results: {0}", request.Headers.CacheControl.ToString());
        }


        public void DemonstrateHeaderRequestConnection()
        {
            var request = new HttpRequestMessage();
            bool parsedOk = false;

            // Set the header with a string.
            parsedOk = request.Headers.Connection.TryParseAdd("close");

            // Set the header with a strong type.
            request.Headers.Connection.Add(new HttpConnectionOptionHeaderValue("cache-control"));

            // Get the strong type out
            foreach (var value in request.Headers.Connection)
            {
                System.Diagnostics.Debug.WriteLine("One of the Connection values: {0}", value.Token);
            }

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The Connection ToString() results: {0}", request.Headers.Connection.ToString());
        }

        public void DemonstrateHeaderRequestCookie()
        {
            var request = new HttpRequestMessage();
            bool parsedOk = false;

            // Set the header with a string.
            parsedOk = request.Headers.Cookie.TryParseAdd("cookieName=cookieValue");

            // Set the header with a strong type.
            request.Headers.Cookie.Add(new HttpCookiePairHeaderValue("cookie2", "value2"));

            // Get the strong type out
            foreach (var value in request.Headers.Cookie)
            {
                System.Diagnostics.Debug.WriteLine("One of the Cookie values: {0}={1}", value.Name, value.Value);
            }

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The Cookie ToString() results: {0}", request.Headers.Cookie.ToString());
        }


        public void DemonstrateHeaderRequestDate()
        {
            var request = new HttpRequestMessage();

            // This is not typically set with a string.

            // Set the header with a strong type.
            DateTimeOffset value = DateTimeOffset.UtcNow;
            request.Headers.Date = value;

            // Get the strong type out
            System.Diagnostics.Debug.WriteLine("Date value in ticks: {0}", request.Headers.Date.Value.Ticks);

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The Date ToString() results: {0}", request.Headers.Date.ToString());
        }

        public void DemonstrateHeaderRequestFrom()
        {
            var request = new HttpRequestMessage();

            // Set the header with a string.
            request.Headers.From = "person@example.com";

            // Get the strong type out
            System.Diagnostics.Debug.WriteLine("From value: {0}", request.Headers.From);
        }

        public void DemonstrateHeaderRequestHost()
        {
            var request = new HttpRequestMessage();

            // This is not typically set with a string.

            // Set the header with a strong type.
            // HostName is in the Windows.Networking namespace.
            var value = new Windows.Networking.HostName("example.com");
            request.Headers.Host = value;

            // Get the strong type out
            System.Diagnostics.Debug.WriteLine("Canonical Host name: {0}", request.Headers.Host.CanonicalName);

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The Host ToString() results: {0}", request.Headers.Host.ToString());
        }

        public void DemonstrateHeaderRequestIfModifiedSince()
        {
            var request = new HttpRequestMessage();

            // This is not typically set with a string.

            // Set the header with a strong type.
            var value = DateTimeOffset.Now.AddDays(-1); // Since yesterday.
            request.Headers.IfModifiedSince = value;

            // Get the strong type out
            System.Diagnostics.Debug.WriteLine("IfModifiedSince value in ticks: {0}", request.Headers.IfModifiedSince.Value.Ticks);

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The IfModifiedSince ToString() results: {0}", request.Headers.IfModifiedSince.ToString());
        }

        public void DemonstrateHeaderRequestIfUnmodifiedSince()
        {
            var request = new HttpRequestMessage();

            // This is not typically set with a string.

            // Set the header with a strong type.
            var value = DateTimeOffset.Now.AddDays(-1); // Since yesterday.
            request.Headers.IfUnmodifiedSince = value;

            // Get the strong type out
            System.Diagnostics.Debug.WriteLine("IfUnmodifiedSince value in ticks: {0}", request.Headers.IfUnmodifiedSince.Value.Ticks);

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The IfUnmodfiedSince ToString() results: {0}", request.Headers.IfUnmodifiedSince.ToString());
        }

        public void DemonstrateHeaderRequestMaxForwards()
        {
            var request = new HttpRequestMessage();

            // Set the header with an integer.
            request.Headers.MaxForwards= 2;

            // Get the strong type out
            System.Diagnostics.Debug.WriteLine("MaxForwards value: {0}", request.Headers.MaxForwards);
        }

        public void DemonstrateHeaderRequestProxyAuthorization()
        {
            var request = new HttpRequestMessage();

            // Set the header with a strong type.
            string username = "user";
            string password = "password";
            var buffer = Windows.Security.Cryptography.CryptographicBuffer.ConvertStringToBinary(username + ":" + password, Windows.Security.Cryptography.BinaryStringEncoding.Utf16LE);
            string base64token = Windows.Security.Cryptography.CryptographicBuffer.EncodeToBase64String(buffer);
            request.Headers.ProxyAuthorization = new HttpCredentialsHeaderValue("Basic", base64token);


            // Get the strong type out
            System.Diagnostics.Debug.WriteLine("One of the ProxyAuthorixation values: {0}={1}",
                request.Headers.ProxyAuthorization.Scheme,
                request.Headers.ProxyAuthorization.Token);

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The ProxyAuthorization ToString() results: {0}", request.Headers.ProxyAuthorization.ToString());
        }


        public void DemonstrateHeaderRequestReferer()
        {
            var request = new HttpRequestMessage();

            // This is not typically set with a string.

            // Set the header with a strong type.
            // Uri is either in the Windows.Foundation namespace (JavaScript and C++)
            // or in the System.Net namespace (C#).
            var value = new Uri("http://example.com/");
            request.Headers.Referer = value;

            // Get the strong type out
            System.Diagnostics.Debug.WriteLine("Referer absolute uri: {0}", request.Headers.Referer.AbsoluteUri);

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The Host ToString() results: {0}", request.Headers.Referer.ToString());
        }

        public void DemonstrateHeaderRequestUserAgent()
        {
            var request = new HttpRequestMessage();
            bool parsedOk = false;

            // Set the header with a string.
            parsedOk = request.Headers.UserAgent.TryParseAdd("testprogram/1.0");

            // Set the header with a strong type.
            request.Headers.UserAgent.Add(new HttpProductInfoHeaderValue("myprogram", "2.2"));

            // Get the strong type out
            foreach (var value in request.Headers.UserAgent)
            {
                System.Diagnostics.Debug.WriteLine("One of the UserAgent values: {0} / {1}", value.Product.Name, value.Product.Version);
            }

            // The ToString() is useful for diagnostics, too.
            System.Diagnostics.Debug.WriteLine("The UserAgent ToString() results: {0}", request.Headers.UserAgent.ToString());
        }

설명

HttpRequestHeaderCollection은 HTTP 요청과 연결된 HTTP 헤더의 컬렉션입니다. HttpRequestHeaderCollection 개체를 사용하여 HTTP 요청에서 특정 헤더를 얻거나 설정할 수 있습니다. HttpRequestHeaderCollection 개체의 대부분의 속성은 특정 HTTP 헤더의 값에 대한 액세스를 제공합니다.

HttpRequestMessageHeaders 속성은 HttpRequestHeaderCollection 개체를 반환합니다. HttpClientDefaultRequestHeaders 속성은 HttpRequestHeaderCollection 개체도 반환합니다. HttpRequestHeaderCollection 개체를 생성하는 두 가지 메서드입니다.

HttpRequestHeaderCollection은 앱 개발자가 설정할 수 있는 HTTP 요청의 HTTP 헤더를 나타내며, 결국 요청과 함께 전송될 수 있는 모든 헤더는 아닙니다. HttpBaseProtocolFilter는 일부 추가 헤더를 추가합니다.

HTTP 요청의 헤더는 기본 스택에서 변경할 수 있습니다. 따라서 요청이 완료된 후 앱이 HttpRequestHeaderCollection에서 헤더 값을 가져올 수 있습니다.

C# 또는 Microsoft Visual Basic에서 컬렉션 열거

C# 또는 Microsoft Visual Basic에서 HttpRequestHeaderCollection 개체를 반복할 수 있습니다. foreach 구문 사용과 같은 대부분의 경우 컴파일러는 이 캐스팅을 수행하므로 명시적으로 캐스팅 IEnumerable 할 필요가 없습니다. 예를 들어 GetEnumerator를 호출하려는 경우 명시적으로 캐스팅해야 하는 경우 컬렉션 개체를 제약 조건으로 StringStringKeyValuePair를 사용하여 IEnumerable<T>로 캐스팅합니다.

속성

Accept

HTTP 요청에서 Accept HTTP 헤더의 값을 나타내는 HttpMediaTypeWithQualityHeaderValue 개체의 HttpMediaTypeWithQualityHeaderValueCollection을 가져옵니다.

AcceptEncoding

HTTP 요청에서 Accept-Encoding HTTP 헤더의 값을 나타내는 HttpContentCodingWithQualityHeaderValue 개체의 HttpContentCodingWithQualityHeaderValueCollection을 가져옵니다.

AcceptLanguage

HTTP 요청에서 Accept-Language HTTP 헤더의 값을 나타내는 HttpLanguageRangeWithQualityHeaderValue 개체의 HttpLanguageRangeWithQualityHeaderValueCollection을 가져옵니다.

Authorization

HTTP 요청에서 권한 부여 HTTP 헤더의 값을 나타내는 HttpCredentialsHeaderValue 개체를 가져오거나 설정합니다.

CacheControl

HTTP 요청에서 Cache-Control HTTP 헤더의 값을 나타내는 HttpCacheDirectiveHeaderValueCollection을 가져옵니다.

Connection

HTTP 요청에서 연결 HTTP 헤더의 값을 나타내는 HttpConnectionOptionHeaderValue 개체의 HttpConnectionOptionHeaderValueCollection을 가져옵니다.

Cookie

HTTP 요청에 전송된 쿠키 HTTP 헤더의 값을 나타내는 HttpCookiePairHeaderValue 개체의 HttpCookiePairHeaderValueCollection을 가져옵니다.

Date

HTTP 요청의 Date HTTP 헤더 값을 나타내는 DateTime 개체를 가져오거나 설정합니다.

Expect

HTTP 요청에서 예상 HTTP 헤더의 값을 나타내는 HttpExpectationHeaderValue 개체의 HttpExpectationHeaderValueCollection을 가져옵니다.

From

HTTP 요청의 From HTTP 헤더 값을 나타내는 String을 가져오거나 설정합니다.

Host

HTTP 요청에서 호스트 HTTP 헤더의 값을 나타내는 HostName을 가져오거나 설정합니다.

IfModifiedSince

HTTP 요청에서 If-Modified-Since HTTP 헤더의 값을 나타내는 DateTime 개체를 가져오거나 설정합니다.

IfUnmodifiedSince

HTTP 요청의 If-Unmodified-Since HTTP 헤더 값을 나타내는 DateTime 개체를 가져오거나 설정합니다.

MaxForwards

HTTP 요청에서 Max-Forwards HTTP 헤더의 값을 나타내는 정수 값을 가져오거나 설정합니다.

ProxyAuthorization

HTTP 요청에서 Proxy-Authorization HTTP 헤더의 값을 나타내는 HttpCredentialsHeaderValue 개체를 가져오거나 설정합니다.

Referer

HTTP 요청에서 참조자 HTTP 헤더의 값을 나타내는 Uri를 가져오거나 설정합니다.

Size

HttpRequestHeaderCollection의 개체 수를 가져옵니다.

TransferEncoding

HTTP 요청에서 Transfer-Encoding HTTP 헤더의 값을 나타내는 HttpTransferCodingHeaderValue 개체의 HttpTransferCodingHeaderValueCollection을 가져옵니다.

UserAgent

HTTP 요청에서 User-Agent HTTP 헤더의 값을 나타내는 HttpProductInfoHeaderValue 개체의 HttpProductInfoHeaderValueCollection을 가져옵니다.

메서드

Append(String, String)

HttpRequestHeaderCollection의 끝에 새 항목을 추가합니다.

Clear()

HttpRequestHeaderCollection에서 모든 개체를 제거합니다.

First()

HttpRequestHeaderCollection의 첫 번째 항목에 대한 반복기를 검색합니다.

GetView()

HttpRequestHeaderCollection의 변경할 수 없는 보기를 반환합니다.

HasKey(String)

HttpRequestHeaderCollection에 지정된 키가 포함되어 있는지 여부를 확인합니다.

Insert(String, String)

HttpRequestHeaderCollection의 항목을 지정된 키 및 값으로 삽입하거나 바꿉니다.

Lookup(String)

항목이 있는 경우 HttpRequestHeaderCollection 에서 항목을 찾습니다.

Remove(String)

HttpRequestHeaderCollection에서 특정 개체를 제거합니다.

ToString()

현재 HttpRequestHeaderCollection 개체를 나타내는 문자열을 반환합니다.

TryAppendWithoutValidation(String, String)

유효성 검사 없이 HttpRequestHeaderCollection 에 지정된 항목을 추가해 보세요.

적용 대상

추가 정보