HttpClient 클래스

정의

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

public ref class HttpClient sealed : IClosable, IStringable
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.UniversalApiContract)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Web.Http.IHttpClientFactory, 65536, Windows.Foundation.UniversalApiContract)]
/// [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 HttpClient final : IClosable, 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)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.Activatable(Windows.Web.Http.IHttpClientFactory, 65536, "Windows.Foundation.UniversalApiContract")]
class HttpClient final : IClosable, IStringable
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.UniversalApiContract))]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Web.Http.IHttpClientFactory), 65536, typeof(Windows.Foundation.UniversalApiContract))]
[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 HttpClient : System.IDisposable, 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)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Web.Http.IHttpClientFactory), 65536, "Windows.Foundation.UniversalApiContract")]
public sealed class HttpClient : System.IDisposable, IStringable
function HttpClient(filter)
Public NotInheritable Class HttpClient
Implements IDisposable, IStringable
상속
Object Platform::Object IInspectable HttpClient
특성
구현

Windows 요구 사항

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

예제

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

using System;

var uri = new System.Uri("http://www.bing.com");
using (var httpClient = new Windows.Web.Http.HttpClient())
{
    // Always catch network exceptions for async methods
    try
    {
        string result = await httpClient.GetStringAsync(uri);
    }
    catch (Exception ex)
    {
        // Details in ex.Message and ex.HResult.
    }
}
// Having exited the scope of the using statement, httpClient.Dispose() will be called
// automatically, thus freeing up system resources (the underlying socket, and memory
// used for the object).
#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;

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 
{
    // 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).

HttpClient 클래스는 종종 앱에서 텍스트를 다운로드한 다음 구문 분석하는 데 사용됩니다. HTTP 서버에 의해 Content-Type 헤더에 지정된 문자 인코딩이 HTTP 응답 본문의 문자 인코딩(예: XML 문서의 XML 인코딩)과 일치하지 않을 수 있습니다. 텍스트와 함께 HttpClient를 사용하는 한 가지 방법은 GetStringAsync 메서드를 호출하고 반환된 문자열을 텍스트 파서에 전달하는 것입니다. 그러나 Content-Type 이 문자열로 표현 가능한 형식이 아닌 경우 오류가 발생할 수 있습니다. XML 파서에서 HttpClient를 사용하는 신뢰할 수 있는 방법은 GetBufferAsync 메서드를 호출하고 "<?xml>" 요소에 대한 버퍼를 구문 분석하는 것입니다. 그런 다음 지정된 문자 인코딩(예: "<xmlversion="1.0" encoding="UTF-8"?>")을 사용하여 HTTP 응답 본문을 구문 분석합니다. 다른 텍스트 형식의 경우 앱이 HTTP 응답 본문의 초기 부분을 검사하여 사용되는 문자 인코딩을 확인하는 유사한 메서드를 사용할 수 있습니다.

설명

HttpClient 클래스 instance HTTP 요청을 보내고 응답을 받는 세션 역할을 합니다. HttpClient instance 해당 instance 실행된 모든 요청에 적용되는 설정 컬렉션입니다. 또한 모든 HttpClient instance 자체 연결 풀을 사용하여 다른 HttpClient 인스턴스에서 실행된 요청으로부터 해당 요청을 격리합니다.

또한 HttpClient는 보다 구체적인 HTTP 클라이언트에 대한 필터와 함께 사용할 클래스 역할을 합니다. 예를 들어 소셜 네트워크 서비스와 관련된 추가 메서드(instance GetFriends 메서드)를 제공하는 HttpClientFilter가 있습니다.

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

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

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

버전 기록

Windows 버전 SDK 버전 추가된 값
1903 18362 TryDeleteAsync
1903 18362 TryGetAsync(Uri)
1903 18362 TryGetAsync(Uri,HttpCompletionOption)
1903 18362 TryGetBufferAsync
1903 18362 TryGetInputStreamAsync
1903 18362 TryGetStringAsync
1903 18362 TryPostAsync
1903 18362 TryPutAsync
1903 18362 TrySendRequestAsync(HttpRequestMessage)
1903 18362 TrySendRequestAsync(HttpRequestMessage,HttpCompletionOption)

생성자

HttpClient()

HttpClient 클래스의 새 instance 초기화합니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

HttpClient(IHttpFilter)

HTTP 응답 메시지를 처리하기 위한 특정 필터를 사용하여 HttpClient 클래스의 새 instance 초기화합니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

속성

DefaultPrivacyAnnotation

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

DefaultRequestHeaders

각 요청과 함께 전송해야 하는 헤더의 컬렉션을 가져옵니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

메서드

Close()

HttpClient instance 닫고 할당된 리소스를 해제합니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

DeleteAsync(Uri)

지정된 Uri 에 DELETE 요청을 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

Dispose()

관리되지 않는 리소스의 확보, 해제 또는 다시 설정과 관련된 애플리케이션 정의 작업을 수행합니다.

GetAsync(Uri)

GET 요청을 지정된 URI에 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

GetAsync(Uri, HttpCompletionOption)

HTTP 완료 옵션을 비동기 작업으로 사용하여 지정된 Uri 에 GET 요청을 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

GetBufferAsync(Uri)

지정된 Uri에 GET 요청을 보내고 비동기 작업에서 응답 본문을 버퍼로 반환합니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

GetInputStreamAsync(Uri)

지정된 Uri 에 GET 요청을 보내고 비동기 작업에서 응답 본문을 스트림으로 반환합니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

GetStringAsync(Uri)

GET 요청을 지정된 URI에 보내고 비동기 작업에서 문자열로 응답 본문을 반환합니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

PostAsync(Uri, IHttpContent)

지정된 URI에 POST 요청을 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

PutAsync(Uri, IHttpContent)

PUT 요청을 지정된 URI에 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

SendRequestAsync(HttpRequestMessage)

HTTP 요청을 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

SendRequestAsync(HttpRequestMessage, HttpCompletionOption)

비동기 작업으로 HTTP 완료 옵션을 사용하여 HTTP 요청을 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

ToString()

현재 HttpClient 개체를 나타내는 문자열을 반환합니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

TryDeleteAsync(Uri)

지정된 Uri 에 DELETE 요청을 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

TryGetAsync(Uri)

지정된 Uri 에 GET 요청을 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

TryGetAsync(Uri, HttpCompletionOption)

지정된 Uri 에 GET 요청을 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

TryGetBufferAsync(Uri)

지정된 Uri에 GET 요청을 보내고 비동기 작업에서 IBuffer 값이 있는 응답 본문을 HttpGetBufferResult 로 반환합니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

TryGetInputStreamAsync(Uri)

지정된 Uri 에 GET 요청을 보내고 비동기 작업에서 응답 본문을 스트림으로 반환합니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

TryGetStringAsync(Uri)

GET 요청을 지정된 URI에 보내고 비동기 작업에서 문자열로 응답 본문을 반환합니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

TryPostAsync(Uri, IHttpContent)

지정된 Uri 에 POST 요청을 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

TryPutAsync(Uri, IHttpContent)

지정된 Uri 에 PUT 요청을 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

TrySendRequestAsync(HttpRequestMessage)

지정된 Uri 에 HTTP 요청을 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

TrySendRequestAsync(HttpRequestMessage, HttpCompletionOption)

완료 옵션이 있는 HTTP 요청을 지정된 Uri 에 비동기 작업으로 보냅니다. HttpClient 클래스 및 코드 예제에 대한 프로그래밍 지침은 HttpClient 개념 항목을 참조하세요.

적용 대상

추가 정보