웹 서비스에 연결(HTML)
[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]
이러한 항목에서는 Windows 런타임 앱에서 웹 서비스에 연결하는 다양한 방법을 보여 줍니다. 권장되는 방법은 모든 언어에 사용 가능한 새로운 Windows 런타임 클래스인 Windows.Web.Http.HttpClient를 사용하는 것입니다. 이 클래스는 앱에서 웹 서비스에 액세스하는 데 사용할 수 있는 전체 기능을 제공하는 강력한 API입니다.
Windows.Web.Http 네임스페이스의 클래스는 최신 HTTP 클라이언트 앱용 프로그래밍 인터페이스를 제공합니다. Windows.Web.Http 네임스페이스와 관련 Windows.Web.Http.Headers 및 Windows.Web.Http.Filters 네임스페이스는 사용자가 HTTP를 통해 HTTP 요청을 수행하고 최신 웹 서비스에서 HTTP 응답을 받을 수 있게 하는 HTTP 클라이언트 구성 요소를 제공합니다.
기본 HTTP 요청 작업의 경우 Windows.Web.Http.HttpClient에는 가장 일반적인 작업을 처리하기 위한 단순 인터페이스가 있고 이 API는 대부분의 시나리오에 적용되는 인증(AUTH)에 대한 합리적인 기본값을 제공합니다. 더 복잡한 HTTP 작업의 경우 많은 추가 접근 권한 값을 사용할 수 있습니다.
이 섹션의 항목에서는 WinJS.xhr이라는 XMLHttpRequest의 JavaScript 래퍼용 Windows 라이브러리에 대해서도 설명합니다. WinJS.xhr은 앱에서 웹 콘텐츠에 액세스하는 편리한 방법을 제공합니다. WinJS.xhr을 사용하여 임의 형식의 파일 및 콘텐츠를 다운로드하거나 업로드하는 HTTP 또는 HTTPS 요청을 할 수 있습니다.
비동기식으로 요청해야 하는지 여부를 지정할 수 있는 XMLHttpRequest와 달리 WinJS.xhr은 항상 비동기식입니다. WinJS.xhr은 WinJS.Promise를 반환하므로 then 또는 done 메서드를 사용하여 완료된 요청, 오류 및 진행 중인 요청을 처리할 수 있습니다.
경고 이제 XMLHttpRequest를 사용하여 Blob 개체 및 FormData 개체와 같이 완료하는 데 시간이 오래 걸릴 수 있는 매우 큰 개체를 전송할 수 있습니다. Windows.Web.Http.HttpClient를 사용하여 스트림을 포함하는 매우 큰 개체를 보내거나 받을 수도 있습니다. 앱은 언제든지 종료할 수 있으므로 이러한 작업에 Windows.Networking.BackgroundTransfer 네임스페이스의 백그라운드 전송을 사용하는 것을 고려해야 합니다. 큰 콘텐츠 업로드 및 다운로드에 대한 자세한 내용은 파일을 업로드하는 방법 및 백그라운드에서 데이터 전송을 참조하세요.
다음 표에서는 JavaScript로 작성한 앱에서 웹 서비스에 액세스하는 데 사용할 수 있는 API를 보여 줍니다. 플랫폼은 기능이 처음 추가된 Windows 버전을 나타냅니다.
API | 플랫폼 | 설명 |
---|---|---|
Windows 8.1, Windows Phone 8.1, Windows Server 2012 R2 | 데이터를 보내고 받기 위해 HTTP 서버에 연결하는 권장 방법입니다. 이 기능은 JavaScript, C#, Visual Basic 및 C++로 작성한 앱에서도 지원됩니다. |
|
WinJS.xhr | Windows 8, Windows Phone 8.1, Windows Server 2012, | Windows 8 및 Windows Server 2012에서 XMLHttpRequest가 적절하지 않은 경우의 권장 방법이었습니다. |
XMLHttpRequest | Windows 8, Windows Phone 8.1, Windows Server 2012 | 이 개체와 API는 대부분의 최신 웹 브라우저의 JavaScript 구현에서 사용할 수 있습니다. |
대상 개발자 그룹
JavaScript 및 HTML을 사용하여 웹 서비스에 연결하는 앱을 만들려고 하는 개발자
이 항목의 정보는 JavaScript 및 HTML로 작성된 앱에 적용됩니다.
C++/XAML로 작성한 앱 및 .NET Framework 4.5를 사용하고 C# 또는 Visual Basic으로 작성한 앱용 웹 서비스에 연결하는 방법에 대한 자세한 내용은 웹 서비스에 연결(XAML)을 참조하세요.
이 조항의 내용
항목 | 설명 |
---|---|
GET 요청을 웹 서비스에 보내고 Windows.Web.Http 네임스페이스의 Windows.Web.Http.HttpClient 클래스를 사용하여 응답을 검색합니다. |
|
"ms-https-connections-only" meta 요소 값을 사용하면 앱에서 탐색 또는 기타 미디어 외 웹 콘텐츠 검색에 HTTP 연결을 사용하는 것을 막을 수 있습니다. 이 meta 요소의 content 특성을 "true"로 설정하면 HTTP 탐색 및 미디어 외 웹 콘텐츠 검색이 실패합니다. |
|
WinJS.xhr은 앱에서 웹 콘텐츠를 다운로드하는 편리한 방법을 제공합니다. 이 항목에서는 WinJS.xhr을 사용하여 파일을 다운로드하고, 오류를 처리하고, 다운로드 진행률을 보고하는 방법을 설명합니다. 또한 각 콘텐츠 형식을 다운로드하는 방법도 보여 줍니다. |
|
XMLHttpRequest를 래핑하는 WinJS.xhr을 사용할 때는 이진 데이터를 업로드 및 다운로드할 수 있습니다. 이 예제에서는 사진에서 비트맵을 업로드하는 방법을 보여줍니다. 비트맵 파일을 여는 데 사용되는 Windows 런타임 메서드는 IRandomAccessStream을 반환하므로, MSApp.createBlobFromRandomAccessStream을 사용하여 Blob로 변환해야 합니다. 경고 이제는 XMLHttpRequest를 사용하여 Blob 개체 및 FormData 개체와 같이 완료하는 데 시간이 오래 걸릴 수 있는 몇 MB보다 큰 개체를 업로드하거나 다운로드할 수 있습니다. 앱은 언제든지 종료할 수 있으므로 이러한 작업에 Windows 런타임 백그라운드 전송 API를 사용하는 것을 고려해야 합니다. 콘텐츠 업로드 및 다운로드에 대한 자세한 내용은 파일을 업로드하는 방법 및 파일을 다운로드하는 방법을 참조하세요. 백그라운드 전송에 대한 일반적인 설명은 Transferring data in the background을 참조하세요. |
|
WinJS.xhr을 사용하여 웹 리소스를 요청하면 응답이 캐시될 수 있습니다. 즉, 이후 요청에서 요청을 다시 보내지 않고 클라이언트 컴퓨터에 이미 있는 리소스 버전을 반환합니다. 그러나 이미 캐시된 경우에도 요청을 다시 보내도록 HTTP 헤더를 추가할 수 있습니다. |
|
XMLHttpRequest를 사용하는 경우 시간 제한 값을 직접 설정할 수 있지만 Windows.Web.Http.HttpClient 또는 WinJS.xhr을 사용할 때는 직접 설정할 수 없습니다. 그러나 WinJS.Promise 개체에 시간 제한을 설정하는 방법이 있습니다. WinJS.Promise.timeout을 호출하면 지정한 시간 내에 요청이 완료되지 않을 경우 요청이 취소됩니다. |
|
매시업이란 둘 이상의 소스에서 온 데이터를 사용해 새로운 것을 만드는 웹 응용 프로그램입니다. 이 예제에서는 XMLHttpRequest(XHR)를 사용하여 원격 RSS(Really Simple Syndication) 피드를 검색 및 표시하는 방법을 보여 줍니다. |
관련 항목
다른 리소스
루프백을 사용하도록 설정하고 네트워크 격리를 디버그하는 방법
참조
샘플
Blob을 사용하여 콘텐츠 저장 및 로드 샘플
XHR, 탐색 오류 처리 및 URL 구성표 샘플