다음을 통해 공유


Windows.Web.Http 네임스페이스

UWP 앱용 최신 HTTP 클라이언트 API를 제공합니다.

클래스

HttpBufferContent

버퍼를 사용하는 HTTP 콘텐츠를 제공합니다.

HttpClient

HTTP 요청을 보내고 URI로 식별된 리소스에서 HTTP 응답을 받습니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

HttpCookie

HTTP 쿠키를 관리하는 속성 및 메서드 집합을 제공합니다.

HttpCookieCollection

HttpCookie 클래스의 인스턴스에 대한 컬렉션 컨테이너를 제공합니다.

HttpCookieManager

HttpCookie를 추가하거나 삭제하거나 앱과 연결된 쿠키를 봅니다.

HttpFormUrlEncodedContent

application/x-www-form-urlencoded MIME 형식으로 인코딩된 이름/값 데이터를 사용하는 HTTP 콘텐츠를 제공합니다.

HttpGetBufferResult

최종 버퍼 결과를 원래 HTTP 요청, 결과 HTTP 응답(있는 경우), 확장된 오류 값 및 성공 표시와 결합합니다.

HttpGetInputStreamResult

최종 입력 스트림 결과를 원래 HTTP 요청, 결과 HTTP 응답(있는 경우), 확장된 오류 값 및 성공한 표시와 결합합니다.

HttpGetStringResult

최종 문자열 결과를 원래 HTTP 요청, 결과 HTTP 응답(있는 경우), 확장된 오류 값 및 성공 표시와 결합합니다.

HttpMethod

GET 및 POST와 같은 표준 HTTP 메서드를 검색하고 새 HTTP 메서드를 만듭니다.

HttpMultipartContent

multipart/* MIME 형식을 사용하는 HTTP 콘텐츠를 제공합니다.

HttpMultipartFormDataContent

다중 파트/양식 데이터 MIME 형식을 사용하는 HTTP 콘텐츠를 제공합니다.

HttpRequestMessage

헤더를 포함한 HTTP 요청 메시지를 나타냅니다.

HttpRequestResult

원래 HTTP 요청을 결과 HTTP 응답(있는 경우), 확장된 오류 값 및 성공한 표시와 결합합니다.

HttpResponseMessage

헤더, 상태 코드 및 데이터를 포함한 HTTP 응답 메시지를 나타냅니다.

HttpStreamContent

스트림을 사용하는 HTTP 콘텐츠를 제공합니다.

HttpStringContent

문자열을 사용하는 HTTP 콘텐츠를 제공합니다.

HttpTransportInformation

HTTP 연결에서 사용하는 기본 전송에 대한 정보를 제공합니다.

구조체

HttpProgress

HttpClient 작업의 진행률에 대한 상태 정보를 포함합니다.

인터페이스

IHttpContent

HTTP 엔터티 본문 및 콘텐츠 헤더에 대한 기본 인터페이스를 제공합니다.

열거형

HttpCompletionOption

모든 응답을 읽을 때 또는 헤더만 읽을 때 비동기 HttpClient 작업이 완료된 것으로 간주되는지 여부를 나타냅니다.

HttpProgressStage

HTTP 연결 진행 중 단계를 나타냅니다.

HttpResponseMessageSource

HttpResponseMessage에서 받은 데이터의 원본을 나타냅니다.

HttpStatusCode

HTTP 요청에 대한 응답에서 HTTP에 대해 정의된 상태 코드의 값을 포함합니다.

HttpVersion

HTTP 프로토콜 버전을 나타냅니다.

예제

다음 샘플 코드에서는 HTTP 서버에서 콘텐츠를 문자열로 가져오는 방법을 보여 있습니다.

using System;
using Windows.Foundation;
using Windows.Web.Http;

// Note: the URI constructor will throw an exception
// if the string passed is not a valid URI
var uri = new Uri("http://example.com/datalist.aspx");
var httpClient = new HttpClient();

// Always catch network exceptions for async methods
try 
{
    var result = await httpClient.GetStringAsync(uri);
}
catch (Exception ex)
{
    // Details in ex.Message and ex.HResult.       
}

// Once your app is done using the HttpClient object call dispose to 
// free up system resources (the underlying socket and memory used for the object)
httpclient.Dispose();
#include "winrt/Windows.Foundation.h"
#include "winrt/Windows.Web.Http.h"
using namespace winrt;

Windows::Foundation::IAsyncAction HttpClientExample()
{
    Windows::Foundation::Uri uri{ L"http://www.bing.com" };
    Windows::Web::Http::HttpClient httpClient{};

    // Always catch network exceptions for async methods.
    try
    {
        auto response{ co_await httpClient.GetStringAsync(uri) };
    }
    catch (winrt::hresult_error const& ex)
    {
        // Details in ex.message() and ex.to_abi().
    }

    // The destructor of HttpClient frees system resources
    // (the underlying socket, and memory used for the object).
}
using namespace Windows::Foundation;
using namespace Windows::Web::Http;

// Note: the URI constructor will throw an exception
// if the string passed is not a valid URI
uri = ref new Uri("http://example.com/datalist.aspx");
httpClient = ref new HttpClient();

// Always catch network exceptions for async methods
try 
{
    httpClient->GetStringAsync(uri);
}
catch (Exception ^ ex) 
{
    // Details in ex.Message and ex.HResult.       
}

// In C++/CX, the system resources used by httpClient object are released 
// when the object falls out of scope or by the destructor (delete operator).

설명

Windows.Web.Http 네임스페이스 및 관련 Windows.Web.Http.HeadersWindows.Web.Http.Filters 네임스페이스는 HTTP 및 REST 서비스를 대상으로 하는 UWP 앱에 대한 프로그래밍 인터페이스를 제공합니다. 이 새로운 HTTP API의 이 기능은 IETF에서 RFC 2616 에 정의된 HTTP를 준수하도록 설계되었습니다. 새 HTTP API는 개발자를 위한 JavaScript, C#, VB.NET 및 C++에서 일관된 지원을 제공합니다.

이 새로운 API는 Windows 8의 각 언어 프로젝션에 이전에 필요했던 다른 기능으로 세 가지 API의 사용을 대체합니다.

Windows.Web.Http 및 관련 네임스페이스의 클래스는 모든 수준의 HTTP 및 REST 개발을 대상으로 합니다.

  • 기본 HTTP 개발자
  • 사이트별 HTTP 라이브러리 개발자
  • 고급 HTTP 개발자

기본 HTTP 개발자의 경우 새 API에는 대부분의 환경에서 작동해야 하는 가장 일반적인 작업 및 인증에 대한 합리적인 기본값을 처리하는 간단한 인터페이스가 있습니다. 라이브러리 개발자의 경우 일관된 개체 모델과 여러 언어 지원을 통해 개발자를 위해 모든 언어로 라이브러리를 한 번 작성할 수 있습니다. 고급 HTTP 개발자의 경우 새 API에는 다양한 기능 집합이 포함되어 있습니다.

Windows.Web.Http 네임스페이스 및 관련 네임스페이스는 다음 구성 요소를 제공합니다.

HTTP 메시지의 내용은 RFC 2616에 정의된 엔터티 본문에 해당합니다. 다음과 같은 여러 클래스와 Windows.Web.Http 네임스페이스의 인터페이스를 HTTP 콘텐츠에 사용할 수 있습니다.

  • IHttpContent - 개발자가 자체 콘텐츠 개체를 만들 수 있는 기본 인터페이스입니다. HTTP 엔터티 본문 및 콘텐츠 헤더를 나타냅니다. 이 인터페이스에는 실제 콘텐츠 데이터를 가져와서 설정하는 메서드가 있습니다. 또한 콘텐츠 관련 헤더를 가져와서 설정하는 속성도 제공합니다.
  • HttpBufferContent - 버퍼를 사용하는 HTTP 콘텐츠입니다.
  • HttpFormUrlEncodedContent - application/x-www-form-urlencoded MIME 형식으로 인코딩된 이름/값 튜플을 사용하는 HTTP 콘텐츠입니다.
  • HttpMultipartContent - 다중 파트/* MIME 형식을 사용하는 HTTP 콘텐츠입니다.
  • HttpMultipartFormDataContent - 인코딩된 multipart/form-data MIME 형식을 사용하는 HTTP 콘텐츠입니다.
  • HttpStreamContent - 스트림을 사용하는 HTTP 콘텐츠입니다. 이 콘텐츠 형식은 HTTP GET 메서드에서 데이터를 수신하고 HTTP POST 메서드를 사용하여 데이터를 업로드합니다.
  • HttpStringContent - 문자열을 사용하는 HTTP 콘텐츠입니다.

Windows.Web.Http.Headers 네임스페이스의 클래스는 RFC 2616에 정의된 HTTP 헤더를 나타냅니다. HTTP 헤더는 HttpRequestMessageHttpResponseMessage 와 검색되거나 설정된 속성으로 연결됩니다.

Windows.Web.Http 네임스페이스의 클래스는 Windows.Web.Http.Filters 네임스페이스의 클래스에 따라 필터를 사용할 수 있습니다. 필터는 일반적인 HTTP 서비스 문제에 도움이 되는 처리기를 제공합니다. 더 복잡한 HTTP 서비스 문제를 해결하기 위해 필터를 시퀀스로 함께 연결할 수 있습니다. 라이브러리 개발자가 일반적인 HTTP 서비스 문제를 해결하는 데 도움이 되는 몇 가지 바로 사용 가능한 필터가 Windows 8.1 포함되어 있습니다. 이러한 필터에는 모니터링되는 네트워크 연결 및 다시 시도에 대한 처리기가 포함됩니다. 라이브러리 개발자는 사이트별 문제에 대한 자체 필터를 작성할 수 있습니다(예: 사이트에서 503(서버를 사용할 수 없음) 응답을 사용하여 요청을 다시 시도해야 함을 나타낼 수 있습니다.

Windows.Web.Http 네임스페이스와 관련된 Windows.Web.Http.HeadersWindows.Web.Http.Filters 네임스페이스를 사용하는 앱이 대량의 데이터(50MB 이상)를 다운로드하는 경우 앱은 해당 다운로드를 스트리밍하고 기본 버퍼링을 사용하지 않아야 합니다. 기본 버퍼링을 사용하는 경우 클라이언트 메모리 사용량이 매우 커져 성능이 저하될 수 있습니다.

HttpClient를 사용하여 HTTP 서버에 연결하는 방법을 보여 주는 C#/VB/C++ 및 XAML의 샘플 코드는 HttpClient를 참조하세요.

HttpClient를 사용하여 HTTP 서버에 연결하는 방법을 보여 주는 JavaScript 및 HTML의 샘플 코드는 Windows.Web.Http를 사용하여 HTTP 서버에 연결을 참조하세요.