このトピックはまだ評価されていません - このトピックを評価する

HttpWebRequest クラス

2013/12/12

WebRequest クラスの HTTP 固有の実装を提供します。

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

Namespace:  System.Net
アセンブリ:  System.Net (System.Net.dll 内)
public class HttpWebRequest : WebRequest

HttpWebRequest 型で公開されるメンバーは以下のとおりです。

  名前説明
プロテクト メソッドHttpWebRequestHttpWebRequest クラスの新しいインスタンスを初期化します。
このページのトップへ
  名前説明
パブリック プロパティAcceptAccept HTTP ヘッダーの値を取得または設定します。
パブリック プロパティAllowAutoRedirect要求がリダイレクト応答に従うかどうかを示す値を取得または設定します。
パブリック プロパティAllowReadStreamBuffering子孫クラスでオーバーライドする場合、インターネット リソースから読み取るデータをバッファーするかどうかを示す値を取得または設定します。
パブリック プロパティAllowWriteStreamBufferingインターネット リソースに送信するデータをバッファリングするかどうかを示す値を取得または設定します。
パブリック プロパティContentLengthクライアントから送信されたコンテンツの長さをバイト単位で取得または設定します。 (WebRequest.ContentLength をオーバーライドします。)
パブリック プロパティContentTypeContent-type HTTP ヘッダーの値を取得または設定します。 (WebRequest.ContentType をオーバーライドします。)
パブリック プロパティCookieContainerHTTP 要求に関連付けられた CookieCollection オブジェクトのコレクションを指定します。
パブリック プロパティCreatorInstance子孫クラスでオーバーライドされると、IWebRequestCreate クラスから派生するファクトリ オブジェクトを取得します。このクラスは、指定した URI に対して要求を行うためにインスタンス化される WebRequest の作成に使用されます。 (WebRequest から継承されます。)
パブリック プロパティCredentials要求に対して使用する認証情報を取得または設定します。 (WebRequest.Credentials をオーバーライドします。)
パブリック プロパティHaveResponseインターネット リソースから応答が受信されたかどうかを示す値を取得します。
パブリック プロパティHeadersHTTP ヘッダーを構成する名前/値ペアのコレクションを指定します。 (WebRequest.Headers をオーバーライドします。)
パブリック プロパティMethod要求に対して使用するメソッドを取得または設定します。 (WebRequest.Method をオーバーライドします。)
パブリック プロパティRequestUri要求の元の URI (Uniform Resource Identifier) を取得します。 (WebRequest.RequestUri をオーバーライドします。)
パブリック プロパティSupportsCookieContainerCookieContainer プロパティが HttpWebRequest インスタンスによってサポートされているかどうかを示す値を取得します。
パブリック プロパティUseDefaultCredentials子孫クラスでオーバーライドされると、既定の資格情報が要求と共に送信されるかどうかを制御する Boolean 値を取得または設定します。 (WebRequest から継承されます。)
パブリック プロパティUserAgentUser-agent HTTP ヘッダーの値を取得または設定します。
このページのトップへ
  名前説明
パブリック メソッドAbortインターネット リソースへの要求をキャンセルします。 (WebRequest.Abort() をオーバーライドします。)
パブリック メソッドBeginGetRequestStreamデータを書き込むために使用する Stream オブジェクトの非同期要求を開始します。 (WebRequest.BeginGetRequestStream(AsyncCallback, Object) をオーバーライドします。)
パブリック メソッドBeginGetResponseインターネット リソースへの非同期要求を開始します。 (WebRequest.BeginGetResponse(AsyncCallback, Object) をオーバーライドします。)
パブリック メソッドEndGetRequestStreamデータを書き込むために使用する Stream オブジェクトの非同期要求を終了します。 (WebRequest.EndGetRequestStream(IAsyncResult) をオーバーライドします。)
パブリック メソッドEndGetResponseインターネット リソースへの非同期要求を終了します。 (WebRequest.EndGetResponse(IAsyncResult) をオーバーライドします。)
パブリック メソッドEquals(Object)指定した Object が、現在の Object と等しいかどうかを判断します。 (Object から継承されます。)
プロテクト メソッドFinalize現在の HttpWebRequest インスタンスに保持されているリソースを解放します。 (Object.Finalize() をオーバーライドします。)
パブリック メソッドGetHashCode特定の型のハッシュ関数として機能します。 (Object から継承されます。)
パブリック メソッドGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
プロテクト メソッドMemberwiseClone現在の Object の簡易コピーを作成します。 (Object から継承されます。)
パブリック メソッドToString現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
このページのトップへ
  名前説明
パブリック拡張メソッドGetCurrentNetworkInterfaceWeb 要求に対応するネットワーク インターフェイスに関するすべての使用可能な情報を取得します。 (WebRequestExtensions によって定義されています。)
パブリック拡張メソッドSetNetworkPreference携帯電話技術または携帯電話以外の技術に使う Web 要求の優先順位を設定します。 (WebRequestExtensions によって定義されています。)
パブリック拡張メソッドSetNetworkRequirement携帯電話技術または携帯電話以外の技術に使う Web 要求の要件を設定します。 (WebRequestExtensions によって定義されています。)
このページのトップへ

HttpWebRequest クラスには、WebRequest で定義されているプロパティおよびメソッドと、HTTP を使用してサーバーと直接対話できるようにする追加のプロパティおよびメソッドが用意されています。

HttpWebRequest コンストラクターは使用しないでください。新しい HttpWebRequest オブジェクトを初期化するには、WebRequest.Create メソッドを使用します。URI (Uniform Resource Identifier) のスキームが http:// または https:// の場合、WebRequest.CreateHttpWebRequest オブジェクトを返します。

BeginGetResponse メソッドと EndGetResponse メソッドを使用して、リソースへの非同期要求を行うことができます。

BeginGetRequestStream メソッドと EndGetRequestStream メソッドは、送信データ ストリームへの非同期アクセスを可能にします。

HttpWebRequest クラスは、リソースへのアクセス中にエラーが発生したときに WebException をスローします。WebException.Status プロパティには、エラーの原因を示す WebExceptionStatus 値が格納されます。

HttpWebRequest は、メソッドまたはシステムによって設定され、プロパティとしてインターネット リソースに送信される共通 HTTP ヘッダー値を公開します。完全な一覧を次の表に示します。Headers プロパティで、名前/値ペアとしてその他のヘッダーを設定できます。サーバーおよびキャッシュにより、要求時に、ヘッダーが変更または追加されることがあります。

Referer ヘッダーは、ClientHttp のクライアント HTTP 処理に適用できるすべての HTTP 要求に正しく設定されています。

Item プロパティを使用すると、カスタム ヘッダーを設定できます。

ローカルの構成でプロキシを使用するように指定しているか、または要求でプロキシが指定されている場合、要求はプロキシを使用して送信されます。プロキシが指定されていない場合、要求はサーバーに送信されます。

メモメモ:

セキュリティ上の理由から、Cookie は既定では無効です。

クロス ドメイン接続がサポートされ、アプリケーションが、発信元サイト以外の場所のリソースにアクセスできるようになりました。これは、アプリケーションから Web 上の既存のサービスを利用できるようにするうえで重要な機能です。

セキュリティ ポリシー システムは、ネットワーク リソースからポリシー ファイルがダウンロードされない限り、そのリソースへのアクセスをネットワーク接続に許可しません。このセキュリティ ポリシー システムは、System.Net 名前空間の WebClient クラスおよび HTTP クラスのドメイン間ネットワーク アクセスに影響します。WebClient クラスと HTTP クラスの、発信元サイトまたは発信元ホストに対するネットワーク接続では、セキュリティ ポリシーは不要です。

セキュリティ上の理由から、System.Net 名前空間の WebClient クラスおよび HTTP クラスによる、特定の URL クラスへのアクセスは制限されます。System.Windows.Controls 名前空間の ImageMediaElement クラスなど、他のクラスにも同様のアクセス制限が適用されます。また、XAML ソース ファイルやフォント ファイルにも、URL のクラスに基づくアクセス制限が適用されます。

この影響を受ける接続は、ゾーン間、ドメイン間、およびスキーム間の URL アクセスです。これらの制限はネットワークの脅威を回避するために設計されています。

セキュリティ上の理由から、HttpWebRequest クラスは、対象のドメイン間サイトに適用されるセキュリティ ポリシーによって許可されていない限り、クロスドメイン サイトへの特定のヘッダーの送信が制限されます。この制限は、元のサイト以外の場所のリソースに適用されます。認証ヘッダーは、Headers プロパティを使用して設定できます。ただし、資格情報を正しく設定するには、認証ヘッダーの送信が許可されるように、対象に適用されるドメイン間ポリシーの HTTP 要求ヘッダーが設定されている必要があります。

同時に 6 個のアクティブな Web サービスとの接続が可能です。接続が利用可能になるまで、追加の要求は一時停止されます。

機能

この 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
この型のすべてのパブリック static (Visual Basic では Shared) メンバーは、スレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました
表示:
© 2014 Microsoft. All rights reserved.