내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

HttpWebRequest 클래스

2013-12-13

WebRequest 클래스의 HTTP 관련 구현을 제공합니다.

System.Object
  System.Net.WebRequest
    System.Net.HttpWebRequest

Namespace:  System.Net
어셈블리:  System.Net(System.Net.dll)

public class HttpWebRequest : WebRequest

HttpWebRequest 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Protected 메서드HttpWebRequestHttpWebRequest 클래스의 새 인스턴스를 초기화합니다.
맨 위

  이름설명
Public 속성AcceptAccept HTTP 헤더의 값을 가져오거나 설정합니다.
Public 속성AllowAutoRedirect요청이 리디렉션 응답을 따라야 하는지 여부를 나타내는 값을 가져오거나 설정합니다.
Public 속성AllowReadStreamBuffering서브클래스에서 재정의된 경우 인터넷 리소스에서 읽은 데이터를 버퍼링할지 여부를 나타내는 값을 가져오거나 설정합니다.
Public 속성AllowWriteStreamBuffering인터넷 리소스에 보낸 데이터를 버퍼링할 것인지 여부를 나타내는 값을 가져오거나 설정합니다.
Public 속성ContentLength클라이언트에서 보낸 콘텐츠의 길이를 바이트 단위로 가져오거나 설정합니다. (WebRequest.ContentLength을(를) 재정의함)
Public 속성ContentTypeContent-type HTTP 헤더의 값을 가져오거나 설정합니다. (WebRequest.ContentType을(를) 재정의함)
Public 속성CookieContainerHTTP 요청과 연결된 CookieCollection 개체의 컬렉션을 지정합니다.
Public 속성CreatorInstance하위 클래스에서 재정의될 때, 지정된 URI 에 요청하기 위해 인스턴스화된 WebRequest를 만드는 데 사용되는 IWebRequestCreate 클래스에서 파생된 팩터리 개체를 가져옵니다. (WebRequest에서 상속됨)
Public 속성Credentials요청에 대한 인증 정보를 가져오거나 설정합니다. (WebRequest.Credentials을(를) 재정의함)
Public 속성HaveResponse인터넷 리소스로부터 응답을 받았는지 여부를 나타내는 값을 가져옵니다.
Public 속성HeadersHTTP 헤더를 구성하는 이름/값 쌍의 컬렉션을 지정합니다. (WebRequest.Headers을(를) 재정의함)
Public 속성Method요청에 대한 메서드를 가져오거나 설정합니다. (WebRequest.Method을(를) 재정의함)
Public 속성RequestUri요청의 원래 URI(Uniform Resource Identifier)를 가져옵니다. (WebRequest.RequestUri을(를) 재정의함)
Public 속성SupportsCookieContainerCookieContainer 속성이 HttpWebRequest 인스턴스에 의해 지원되는지 여부를 나타내는 값을 가져옵니다.
Public 속성UseDefaultCredentials서브클래스에서 재정의되는 경우 기본 자격 증명을 요청과 함께 보낼지 여부를 제어하는 Boolean 값을 가져오거나 설정합니다. (WebRequest에서 상속됨)
Public 속성UserAgentUser-agent HTTP 헤더의 값을 가져오거나 설정합니다.
맨 위

  이름설명
Public 메서드Abort인터넷 리소스에 대한 요청을 취소합니다. (WebRequest.Abort()을(를) 재정의함)
Public 메서드BeginGetRequestStream데이터를 쓰는 데 사용할 Stream 개체에 대한 비동기 요청을 시작합니다. (WebRequest.BeginGetRequestStream(AsyncCallback, Object)을(를) 재정의함)
Public 메서드BeginGetResponse인터넷 리소스에 하는 비동기 요청을 시작합니다. (WebRequest.BeginGetResponse(AsyncCallback, Object)을(를) 재정의함)
Public 메서드EndGetRequestStream데이터를 쓰는 데 사용할 Stream 개체에 대한 비동기 요청을 끝냅니다. (WebRequest.EndGetRequestStream(IAsyncResult)을(를) 재정의함)
Public 메서드EndGetResponse인터넷 리소스에 대한 비동기 요청을 종료합니다. (WebRequest.EndGetResponse(IAsyncResult)을(를) 재정의함)
Public 메서드Equals(Object)지정한 Object가 현재 Object와 같은지 확인합니다. (Object에서 상속됨)
Protected 메서드Finalize현재 HttpWebRequest 인스턴스에서 보유한 리소스를 해제합니다. (Object.Finalize()을(를) 재정의함)
Public 메서드GetHashCode특정 형식에 대한 해시 함수 역할을 합니다. (Object에서 상속됨)
Public 메서드GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Protected 메서드MemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
맨 위

  이름설명
Public 확장 메서드GetCurrentNetworkInterface웹 요청에 해당하는 네트워크 인터페이스에 대한 사용 가능한 모든 정보를 가져옵니다. (WebRequestExtensions에서 정의됨)
Public 확장 메서드SetNetworkPreference통신망 기술 또는 비통신망 기술을 사용하여 웹 요청의 기본 설정을 구성합니다. (WebRequestExtensions에서 정의됨)
Public 확장 메서드SetNetworkRequirement통신망 기술 또는 비통신망 기술을 사용하여 웹 요청의 요구 사항을 구성합니다. (WebRequestExtensions에서 정의됨)
맨 위

HttpWebRequest 클래스가 WebRequest에 정의된 속성과 메서드 그리고 HTTP를 사용하여 사용자가 서버와 직접 상호 작용하게 하는 추가 속성과 메서드에 대해 지원합니다.

HttpWebRequest 생성자를 사용하지 마세요. 새 HttpWebRequest 개체를 초기화하려면 WebRequest.Create 메서드를 사용합니다. URI(Uniform Resource Identifier) 체계가 http://이거나 https://이면 WebRequest.CreateHttpWebRequest 개체를 반환합니다.

BeginGetResponseEndGetResponse 메서드를 사용하면 리소스에 대한 비동기 요청을 수행할 수 있습니다.

BeginGetRequestStreamEndGetRequestStream 메서드가 보내기 데이터 스트림에 비동기 액세스를 제공합니다.

HttpWebRequest 클래스는 리소스에 액세스하는 동안 오류가 발생할 경우 WebException이 발생합니다. WebException.Status 속성에는 오류의 원인을 나타내는 WebExceptionStatus 값이 들어 있습니다.

HttpWebRequest가 메서드가 설정하거나 시스템이 설정하고, 속성으로 인터넷 리소스에 보낸 일반 HTTP 헤더 값을 노출하며, 다음 표에는 전체 목록이 들어 있습니다. 이름/값 쌍으로 Headers 속성에 다른 헤더를 설정할 수 있습니다. 서버와 캐시에서 요청 중에 헤더를 변경하거나 추가할 수도 있습니다.

Referer 헤더는 ClientHttp에 대한 클라이언트 HTTP 처리에 적용 가능한 모든 HTTP 요청에 대해 적절히 설정됩니다.

Item 속성은 사용자 지정 헤더를 설정하는 데 사용할 수 있습니다.

로컬 구성이 프록시를 사용하도록 지정되었거나 요청에 프록시가 지정된 경우, 해당 요청은 프록시를 사용하여 보내집니다. 프록시가 지정되어 있지 않으면 서버로 요청이 보내집니다.

참고참고:

보안상의 이유로 쿠키는 기본적으로 사용할 수 없도록 설정되어 있습니다.

도메인 간 연결 지원을 통해 응용프로그램은 원래 사이트 이외의 위치에서도 리소스에 액세스할 수 있습니다. 이 기능은 응용프로그램이 웹에서 기존 서비스를 사용하는 데 매우 중요합니다.

보안 정책 시스템에서는 네트워크 연결을 통해 특정 네트워크 리소스에 액세스하려면 해당 네트워크 리소스에서 정책 파일을 먼저 다운로드해야 합니다. 이 보안 정책 시스템은 System.Net 네임스페이스에 포함된 WebClient> 및 HTTP 클래스에 대한 도메인 간 네트워크 액세스에 영향을 줍니다. WebClient 및 HTTP 클래스에 액세스하기 위한 원본 사이트 또는 호스트에 대한 네트워크 연결에는 보안 정책이 필요하지 않습니다.

보안상의 이유로, System.Net 네임스페이스에 있는 WebClient 및 HTTP 클래스의 특정 URL 클래스에 대한 액세스가 제한됩니다. System.Windows.Controls 네임스페이스에 있는 MediaElementSystem.Windows.Controls 클래스를 비롯한 다른 클래스에도 이와 유사한 액세스 제한이 적용됩니다. 또한 URL의 클래스를 기반으로 XAML 소스 파일과 글꼴 파일에도 액세스 제한이 적용됩니다.

이로 인해 영역 간 액세스, 도메인 간 액세스 및 URL 체계 간 액세스 연결이 영향을 받습니다. 이러한 제한은 네트워크 위협을 방지하기 위해 디자인되었습니다.

보안상의 이유로, 대상 도메인 간 사이트에 적용 가능한 보안 정책에서 헤더를 허용하지 않는 한 HttpWebRequest 클래스는 도메인 간 사이트에 특정 헤더를 보낼 수 없도록 제한됩니다. 이 제한은 원본 사이트 이외의 위치에 있는 리소스에 적용됩니다. Authorization 헤더는 Headers 속성을 사용하여 설정할 수 있습니다. 하지만 자격 증명을 적절히 설정하려면 대상에 적용 가능한 도메인 간 정책은 인증 헤더를 전송하도록 http-요청-헤더가 설정되어 있어야 합니다.

6개의 활성 웹 서비스 연결이 동시에 허용됩니다. 연결을 사용할 수 있을 때까지 추가 요청은 일시 중지됩니다.

기능

앱에서 이 API를 사용하는 경우 앱 매니페스트에서 다음 기능을 지정해야 합니다. 그렇지 않으면 앱이 올바르게 작동하지 않거나 예기치 않게 종료될 수 있습니다.

ID_CAP_NETWORKING

Windows Phone 8, Windows Phone OS 7.1

자세한 내용은 Windows Phone의 앱 기능 및 하드웨어 요구 사항을 참조하세요.


public class RequestState
{
  // This class stores the State of the request.
  const int BUFFER_SIZE = 1024;
  public StringBuilder requestData;
  public byte[] BufferRead;
  public HttpWebRequest request;
  public HttpWebResponse response;
  public Stream streamResponse;

  public RequestState()
  {
    BufferRead = new byte[BUFFER_SIZE];
    requestData = new StringBuilder("");
    request = null;
    streamResponse = null;
  }
}

public class Example
{

  public static ManualResetEvent allDone= new ManualResetEvent(false);
  const int BUFFER_SIZE = 1024;

  public static void Demo(System.Windows.Controls.TextBlock outputBlock)
  {
      try
      {
          System.Uri uri = new Uri("http://www.contoso.com");

          // Create a HttpWebrequest object to the desired URL.
          HttpWebRequest myHttpWebRequest1= (HttpWebRequest)WebRequest.Create(uri);

          // Create an instance of the RequestState and assign the previous myHttpWebRequest1
          // object to it's request field.  
          RequestState myRequestState = new RequestState();  
          myRequestState.request = myHttpWebRequest1;

          // Start the asynchronous request.
          IAsyncResult result=
          (IAsyncResult) myHttpWebRequest1.BeginGetResponse(new AsyncCallback(RespCallback),myRequestState);

          allDone.WaitOne();

          // Release the HttpWebResponse resource.
          myRequestState.response.Close();
      }
      catch(WebException e)
      {
          outputBlock.Text += "\nException raised!\n";
          outputBlock.Text += "Message: ";
          outputBlock.Text += e.Message;
          outputBlock.Text += "\nStatus: ";
          outputBlock.Text += e.Status;
          outputBlock.Text += "\n";
      }
      catch(Exception e)
      {
          outputBlock.Text += "\nException raised!\n";
          outputBlock.Text += "\nMessage: ";
          outputBlock.Text += e.Message;
          outputBlock.Text += "\n";
      }
  }

  private static void RespCallback(IAsyncResult asynchronousResult)
  {  
      try
      {
          // State of request is asynchronous.
          RequestState myRequestState=(RequestState) asynchronousResult.AsyncState;
          HttpWebRequest  myHttpWebRequest2=myRequestState.request;
          myRequestState.response = (HttpWebResponse) myHttpWebRequest2.EndGetResponse(asynchronousResult);

          // Read the response into a Stream object.
          Stream responseStream = myRequestState.response.GetResponseStream();
          myRequestState.streamResponse=responseStream;

          // Begin the Reading of the contents of the HTML page and print it to the console.
          IAsyncResult asynchronousInputRead = responseStream.BeginRead(myRequestState.BufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), myRequestState);
      }
      catch(WebException e)
      {
          // Need to handle the exception
          // ...

          Debug.WriteLine(e.Message);
      }
  }

  private static  void ReadCallBack(IAsyncResult asyncResult)
  {
      try
      {
          RequestState myRequestState = (RequestState)asyncResult.AsyncState;
          Stream responseStream = myRequestState.streamResponse;
          int read = responseStream.EndRead( asyncResult );

          // Read the HTML page and then do something with it
          if (read > 0)
          {
              myRequestState.requestData.Append(Encoding.UTF8.GetString(myRequestState.BufferRead, 0, read));
              IAsyncResult asynchronousResult = responseStream.BeginRead( myRequestState.BufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), myRequestState);
          }
          else
          {
              if(myRequestState.requestData.Length>1)
              {
                  string stringContent;
                  stringContent = myRequestState.requestData.ToString();
                  // do something with the response stream here
              }

              responseStream.Close();
              allDone.Set();     
          }
      }
      catch(WebException e)
      {
          // Need to handle the exception
          // ...

          Debug.WriteLine(e.Message);
      }
  }


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 모든 인스턴스 멤버는 스레드로부터 안전하지 않을 수 있습니다.

표시:
© 2014 Microsoft