Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

WebRequest.BeginGetResponse-Methode

Aktualisiert: November 2007

Startet beim Überschreiben in einer Nachfolgerklasse eine asynchrone Anforderung einer Internetressource.

Namespace:  System.Net
Assembly:  System (in System.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public virtual IAsyncResult BeginGetResponse(
	AsyncCallback callback,
	Object state
)
/** @attribute HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true) */
public IAsyncResult BeginGetResponse(
	AsyncCallback callback,
	Object state
)
public function BeginGetResponse(
	callback : AsyncCallback, 
	state : Object
) : IAsyncResult

Parameter

callback
Typ: System.AsyncCallback
Der AsyncCallback-Delegat.
state
Typ: System.Object
Ein Objekt mit Zustandsinformationen für diese asynchrone Anforderung.

Rückgabewert

Typ: System.IAsyncResult
Ein IAsyncResult, das auf die asynchrone Anforderung verweist.

AusnahmeBedingung
NotImplementedException

Es wurde versucht, auf die Methode zuzugreifen, obwohl die Methode in einer Nachfolgerklasse nicht überschrieben wurde.

1x4fy15f.alert_note(de-de,VS.90).gifHinweis:

Das auf diesen Typ oder Member angewendete HostProtectionAttribute-Attribut besitzt den folgenden Resources-Eigenschaftenwert: ExternalThreading. Das HostProtectionAttribute hat keine Auswirkungen auf Desktopanwendungen (die normalerweise durch Doppelklicken auf ein Symbol, Eingeben eines Befehls oder einer URL in einem Browser gestartet werden). Weitere Informationen finden Sie unter der HostProtectionAttribute-Klasse oder unter SQL Server-Programmierung und Hostschutzattribute.

Die BeginGetResponse-Methode startet eine asynchrone Anforderung einer Antwort. Die Rückrufmethode, die den AsyncCallback-Delegaten implementiert, verwendet für die Rückgabe der WebResponse aus der Internetressource die EndGetResponse-Methode.

1x4fy15f.alert_note(de-de,VS.90).gifHinweis:

Die WebRequest-Klasse ist eine abstract Klasse. Das tatsächliche Verhalten von WebRequest-Instanzen zur Laufzeit wird von der Nachfolgerklasse bestimmt, die von der WebRequest.Create-Methode zurückgegeben wird. Weitere Informationen über Standardwerte und Ausnahmen finden Sie in der Dokumentation zu den Nachfolgerklassen, z. B. HttpWebRequest und FileWebRequest.

1x4fy15f.alert_note(de-de,VS.90).gifHinweis:

Wenn eine WebException ausgelöst wird, verwenden Sie die Response-Eigenschaft und die Status-Eigenschaft der Ausnahme, um die Antwort des Servers zu bestimmen.

Im folgenden Beispiel wird BeginGetResponse verwendet, um die Zielressource asynchron anzufordern. Nach dem Abrufen der Ressource wird die angegebene Rückrufmethode ausgeführt.


using System;
using System.Net;
using System.IO;
using System.Text;
using System.Threading;



public class RequestState
{
  // This class stores the state of the request.
  const int BUFFER_SIZE = 1024;
  public StringBuilder requestData;
  public byte[] bufferRead;
  public WebRequest request;
  public WebResponse response;
  public Stream responseStream;
  public RequestState()
  {
    bufferRead = new byte[BUFFER_SIZE];
    requestData = new StringBuilder("");
    request = null;
    responseStream = null;
  }
}
class WebRequest_BeginGetResponse
{
  public static ManualResetEvent allDone= new ManualResetEvent(false);
  const int BUFFER_SIZE = 1024;
  static void Main()
  {
    try
    {
      // Create a new webrequest to the mentioned URL.   
      WebRequest myWebRequest= WebRequest.Create("http://www.contoso.com");

      // Please, set the proxy to a correct value. 
      WebProxy proxy=new WebProxy("myproxy:80");

      proxy.Credentials=new NetworkCredential("srikun","simrin123");
      myWebRequest.Proxy=proxy;
      // Create a new instance of the RequestState.
      RequestState myRequestState = new RequestState();
      // The 'WebRequest' object is associated to the 'RequestState' object.
      myRequestState.request = myWebRequest;
      // Start the Asynchronous call for response.
      IAsyncResult asyncResult=(IAsyncResult) myWebRequest.BeginGetResponse(new AsyncCallback(RespCallback),myRequestState);
      allDone.WaitOne();
      // Release the WebResponse resource.
      myRequestState.response.Close();
      Console.Read();
    }
    catch(WebException e)
    {
      Console.WriteLine("WebException raised!");
      Console.WriteLine("\n{0}",e.Message);
      Console.WriteLine("\n{0}",e.Status);
    } 
    catch(Exception e)
    {
      Console.WriteLine("Exception raised!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
  }
  private static void RespCallback(IAsyncResult asynchronousResult)
  {  
    try
    {
      // Set the State of request to asynchronous.
      RequestState myRequestState=(RequestState) asynchronousResult.AsyncState;
      WebRequest  myWebRequest1=myRequestState.request;
      // End the Asynchronous response.
      myRequestState.response =  myWebRequest1.EndGetResponse(asynchronousResult);
      // Read the response into a 'Stream' object.
      Stream responseStream = myRequestState.response.GetResponseStream();
      myRequestState.responseStream=responseStream;
      // Begin the reading of the contents of the HTML page and print it to the console.
      IAsyncResult asynchronousResultRead = responseStream.BeginRead(myRequestState.bufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), myRequestState);

    }
    catch(WebException e)
    {
      Console.WriteLine("WebException raised!");
      Console.WriteLine("\n{0}",e.Message);
      Console.WriteLine("\n{0}",e.Status);
    } 
    catch(Exception e)
    {
      Console.WriteLine("Exception raised!");
      Console.WriteLine("Source : " + e.Source);
      Console.WriteLine("Message : " + e.Message);
    }
  }
  private static  void ReadCallBack(IAsyncResult asyncResult)
  {
    try
    {
      // Result state is set to AsyncState.
      RequestState myRequestState = (RequestState)asyncResult.AsyncState;
      Stream responseStream = myRequestState.responseStream;
      int read = responseStream.EndRead( asyncResult );
      // Read the contents of the HTML page and then print to the console.
      if (read > 0)
      {
        myRequestState.requestData.Append(Encoding.ASCII.GetString(myRequestState.bufferRead, 0, read));
        IAsyncResult asynchronousResult = responseStream.BeginRead( myRequestState.bufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), myRequestState);
      }
      else
      {
        Console.WriteLine("\nThe HTML page Contents are:  ");
        if(myRequestState.requestData.Length>1)
        {
          string sringContent;
          sringContent = myRequestState.requestData.ToString();
          Console.WriteLine(sringContent);
        }
        Console.WriteLine("\nPress 'Enter' key to continue........");
        responseStream.Close();
        allDone.Set();
      }
    }
    catch(WebException e)
    {
      Console.WriteLine("WebException raised!");
      Console.WriteLine("\n{0}",e.Message);
      Console.WriteLine("\n{0}",e.Status);
    } 
    catch(Exception e)
    {
      Console.WriteLine("Exception raised!");
      Console.WriteLine("Source : {0}" , e.Source);
      Console.WriteLine("Message : {0}" , e.Message);
    }

  }

}


import System.*;
import System.Net.*;
import System.IO.*;
import System.Text.*;
import System.Threading.*;

public class RequestState
{
    // This class stores the state of the request.
    private static final int BUFFER_SIZE = 1024;
    public StringBuilder requestData;
    public ubyte bufferRead[];
    public WebRequest request;
    public WebResponse response;
    public Stream responseStream;

    public RequestState()
    {
        bufferRead = new ubyte[BUFFER_SIZE];
        requestData = new StringBuilder("");
        request = null;
        responseStream = null;
    } //RequestState
} //RequestState

class WebRequest_BeginGetResponse
{
    public static ManualResetEvent allDone = new ManualResetEvent(false);
    private static final int BUFFER_SIZE = 1024;

    public static void main(String[] args)
    {
        try {
            // Create a new webrequest to the mentioned URL.   
            WebRequest myWebRequest = 
                WebRequest.Create("http://www.contoso.com");
            // Please, set the proxy to a correct value. 
            WebProxy proxy = new WebProxy("myproxy:80");

            proxy.set_Credentials(new NetworkCredential("srikun", "simrin123"));
            myWebRequest.set_Proxy(proxy);
            // Create a new instance of the RequestState.
            RequestState myRequestState = new RequestState();
            // The 'WebRequest' object is associated to the 'RequestState' object.
            myRequestState.request = myWebRequest;
            // Start the Asynchronous call for response.
            IAsyncResult asyncResult = (IAsyncResult)(myWebRequest.
                BeginGetResponse(new AsyncCallback(RespCallback),
                myRequestState));
            allDone.WaitOne();
            // Release the WebResponse resource.
            myRequestState.response.Close();
            Console.Read();
        }
        catch (WebException e) {
            Console.WriteLine("WebException raised!");
            Console.WriteLine("\n{0}", e.get_Message());
            Console.WriteLine("\n{0}", e.get_Status());
        }
        catch (System.Exception e) {
            Console.WriteLine("Exception raised!");
            Console.WriteLine("Source : " + e.get_Source());
            Console.WriteLine("Message : " + e.get_Message());
        }
    } //main

    private static void RespCallback(IAsyncResult asynchronousResult)
    {
        try {
            // Set the State of request to asynchronous.
            RequestState myRequestState = (RequestState)(
                asynchronousResult.get_AsyncState());
            WebRequest myWebRequest1 = myRequestState.request;
            // End the Asynchronous response.
            myRequestState.response = myWebRequest1.EndGetResponse(
                asynchronousResult);
            // Read the response into a 'Stream' object.
            Stream responseStream = myRequestState.response.GetResponseStream();
            myRequestState.responseStream = responseStream;
            // Begin the reading of the contents of the HTML page and print it 
            // to the console.
            IAsyncResult asynchronousResultRead = responseStream.BeginRead(
                myRequestState.bufferRead, 0, BUFFER_SIZE, new AsyncCallback(
                ReadCallBack), myRequestState);
        }
        catch (WebException e) {
            Console.WriteLine("WebException raised!");
            Console.WriteLine("\n{0}", e.get_Message());
            Console.WriteLine("\n{0}", e.get_Status());
        }
        catch (System.Exception e) {
            Console.WriteLine("Exception raised!");
            Console.WriteLine("Source : " + e.get_Source());
            Console.WriteLine("Message : " + e.get_Message());
        }
    } //RespCallback

    private static void ReadCallBack(IAsyncResult asyncResult)
    {
        try {
            // Result state is set to AsyncState.
            RequestState myRequestState = (RequestState)(
                asyncResult.get_AsyncState());
            Stream responseStream = myRequestState.responseStream;
            int read = responseStream.EndRead(asyncResult);
            // Read the contents of the HTML page and then print to the console.
            if (read > 0) {
                myRequestState.requestData.Append(Encoding.get_ASCII().
                    GetString(myRequestState.bufferRead, 0, read));
                IAsyncResult asynchronousResult = responseStream.BeginRead(
                    myRequestState.bufferRead, 0, BUFFER_SIZE,
                    new AsyncCallback(ReadCallBack), myRequestState);
            }
            else {
                Console.WriteLine("\nThe HTML page Contents are:  ");
                if (myRequestState.requestData.get_Length() > 1) {
                    String sringContent;
                    sringContent = myRequestState.requestData.ToString();
                    Console.WriteLine(sringContent);
                }
                Console.WriteLine("\nPress 'Enter' key to continue........");
                responseStream.Close();
                allDone.Set();
            }
        }
        catch (WebException e) {
            Console.WriteLine("WebException raised!");
            Console.WriteLine("\n{0}", e.get_Message());
            Console.WriteLine("\n{0}", e.get_Status());
        }
        catch (System.Exception e) {
            Console.WriteLine("Exception raised!");
            Console.WriteLine("Source : {0}", e.get_Source());
            Console.WriteLine("Message : {0}", e.get_Message());
        }
    } //ReadCallBack
} //WebRequest_BeginGetResponse


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile für Smartphone, Windows Mobile für Pocket PC

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 3.5, 2.0, 1.0
Anzeigen: