HttpListener 클래스를 사용하면 HTTP 요청에 응답하는 간단한 HTTP 프로토콜 수신기를 만들 수 있습니다. 이 수신기는 HttpListener 개체의 수명이 지속되는 동안 작동되며 응용 프로그램 내에서 해당 사용 권한으로 실행됩니다.
참고 |
|---|
| 이 클래스는 Windows XP SP2 또는 Windows Server 2003 운영 체제가 실행되는 컴퓨터에서만 사용할 수 있습니다. 이전 버전의 운영 체제가 실행되는 컴퓨터에서 HttpListener 개체를 만들려고 하면 생성자에서 PlatformNotSupportedException 예외가 throw됩니다. |
HttpListener를 사용하려면 HttpListener 생성자를 사용하여 이 클래스의 새 인스턴스를 만든 다음, Prefixes 속성을 사용하여 HttpListener에서 처리해야 할 URI(Uniform Resource Identifier) 접두사를 지정하는 문자열의 컬렉션에 액세스해야 합니다.
URI 접두사 문자열은 URI 체계(http 또는 https), 호스트, 선택적 포트 및 선택적 경로로 구성됩니다. 예를 들어, “http://www.contoso.com:8080/customerData/”는 완전한 접두사 문자열입니다. 접두사는 슬래시(“/”)로 끝나야 합니다. 요청된 URI와 가장 근접하게 일치하는 접두사가 있는 HttpListener 개체가 요청에 응답합니다. 여러 HttpListener 개체가 동일한 접두사를 추가할 수 없습니다. HttpListener에서 이미 사용 중인 접두사를 추가하면 Win32Exception 예외가 throw됩니다.
포트가 지정되어 있으면, 요청된 URI가 어떠한 접두사와도 일치하지 않을 경우 포트로 보낸 요청을 HttpListener에서 받아들일 수 있음을 나타내기 위해 호스트 요소를 “*”로 바꿀 수 있습니다. 예를 들어, 요청된 URI가 HttpListener에서 처리되지 않을 경우 포트 8080으로 보낸 모든 요청을 받으려면 접두사가 “http://*:8080/”이어야 합니다. 마찬가지로, 포트로 보낸 모든 요청을 HttpListener에서 받아들일 수 있도록 지정하려면 “https://+:8080”과 같이 호스트 요소를 “+” 문자로 바꿔야 합니다. “*” 및 “+” 문자는 경로를 포함하는 접두사에 있을 수 있습니다.
클라이언트의 요청에 대한 수신을 시작하려면 컬렉션에 URI 접두사를 추가하고 Start 메서드를 호출합니다. HttpListener에서는 클라이언트 요청을 처리하기 위한 동기 모델과 비동기 모델을 모두 제공합니다. 요청과 이에 대한 응답은 GetContext 메서드나 해당 비동기 메서드인 BeginGetContext 및 EndGetContext 메서드에서 반환되는 HttpListenerContext 개체를 사용하여 액세스할 수 있습니다.
클라이언트 요청을 기다리는 동안 응용 프로그램이 차단되어야 하는 경우와 요청을 한 번에 하나씩만 처리하려는 경우에는 동기 모델이 적합합니다. 동기 모델을 사용하려면 클라이언트가 요청을 보낼 때까지 대기하는 GetContext 메서드를 호출합니다. 이 메서드는 요청이 발생할 때 처리하기 위한 HttpListenerContext 개체를 반환합니다.
보다 복잡한 비동기 모델에서는 요청을 기다리고 각 요청이 자체 실행 스레드에서 처리되는 동안 응용 프로그램이 차단되지 않습니다. 들어오는 각 요청에 대해 호출할 응용 프로그램 정의 메서드를 지정하려면 BeginGetContext 메서드를 사용합니다. 요청을 가져와 처리하고 이에 응답하려면 이 메서드 내에서 EndGetContext 메서드를 호출합니다.
두 모델 모두에서 들어오는 요청은 HttpListenerContext.Request 속성을 사용하여 액세스되고 HttpListenerRequest 개체로 표현됩니다. 마찬가지로 응답은 HttpListenerContext.Response 속성을 사용하여 액세스되고 HttpListenerResponse 개체로 표현됩니다. 이러한 개체는 HttpWebRequest 및 HttpWebResponse 개체와 일부 기능이 같지만 후자의 경우에는 서버가 아닌 클라이언트의 동작을 구현하므로 HttpListener와 함께 사용할 수 없습니다.
HttpListener에서는 클라이언트 인증이 필요할 수 있습니다. 사용할 특정 인증 체계를 지정하거나 사용할 인증 체계를 결정하는 대리자를 지정할 수 있습니다. 인증을 거쳐야 클라이언트의 ID에 대한 정보를 얻을 수 있습니다. 자세한 내용은 User, AuthenticationSchemes 및 AuthenticationSchemeSelectorDelegate 속성을 참조하십시오.
참고 |
|---|
| https를 사용하여 HttpListener를 만드는 경우 해당 수신기에는 서버 인증서를 선택해야 합니다. 그렇지 않으면 예기치 않게 연결이 닫히면서 이 HttpListener의 HttpWebRequest 쿼리가 실패하게 됩니다. |
참고 |
|---|
| HttpListener의 인증 체계를 여러 개 지정하면 수신기는 Negotiate, NTLM, Digest, 및 Basic의 순서로 클라이언트 인증을 요구합니다. |
Windows Server 2003 플랫폼 참고:
이 클래스를 사용하는 데 필요합니다.
Windows XP Home Edition, Windows XP Professional x64 Edition, Windows Server 2003 플랫폼 참고:
이 클래스를 사용하는 데 서비스 팩 2 이상이 필요합니다.