Sdílet prostřednictvím


FtpWebRequest.BeginGetResponse(AsyncCallback, Object) Metoda

Definice

Začne odesílat požadavek a přijímat odpověď ze serveru FTP asynchronně.

public:
 override IAsyncResult ^ BeginGetResponse(AsyncCallback ^ callback, System::Object ^ state);
public override IAsyncResult BeginGetResponse (AsyncCallback? callback, object? state);
public override IAsyncResult BeginGetResponse (AsyncCallback callback, object state);
override this.BeginGetResponse : AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginGetResponse (callback As AsyncCallback, state As Object) As IAsyncResult

Parametry

callback
AsyncCallback

Delegát AsyncCallback , který odkazuje na metodu, která se má vyvolat po dokončení operace.

state
Object

Objekt definovaný uživatelem, který obsahuje informace o operaci. Tento objekt se po dokončení operace předá callback delegátu.

Návraty

Instance IAsyncResult , která označuje stav operace.

Výjimky

Příklady

Následující příklad kódu ukazuje ukončení asynchronní operace pro získání streamu požadavku a následné spuštění požadavku na získání odpovědi. Tento příklad kódu je součástí většího příkladu FtpWebRequest , který je k dispozici pro přehled třídy.

private:
   static void EndGetStreamCallback( IAsyncResult^ ar )
   {
      FtpState^ state = dynamic_cast<FtpState^>(ar->AsyncState);
      Stream^ requestStream = nullptr;

      // End the asynchronous call to get the request stream.
      try
      {
         requestStream = state->Request->EndGetRequestStream( ar );

         // Copy the file contents to the request stream.
         const int bufferLength = 2048;
         array<Byte>^buffer = gcnew array<Byte>(bufferLength);
         int count = 0;
         int readBytes = 0;
         FileStream^ stream = File::OpenRead( state->FileName );
         do
         {
            readBytes = stream->Read( buffer, 0, bufferLength );
            requestStream->Write( buffer, 0, bufferLength );
            count += readBytes;
         }
         while ( readBytes != 0 );
         Console::WriteLine( "Writing {0} bytes to the stream.", count );

         // IMPORTANT: Close the request stream before sending the request.
         requestStream->Close();

         // Asynchronously get the response to the upload request.
         state->Request->BeginGetResponse( gcnew AsyncCallback( EndGetResponseCallback ), state );
      }
      // Return exceptions to the main application thread.
      catch ( Exception^ e ) 
      {
         Console::WriteLine( "Could not get the request stream." );
         state->OperationException = e;
         state->OperationComplete->Set();
         return;
      }
   }
private static void EndGetStreamCallback(IAsyncResult ar)
{
    FtpState state = (FtpState) ar.AsyncState;

    Stream requestStream = null;
    // End the asynchronous call to get the request stream.
    try
    {
        requestStream = state.Request.EndGetRequestStream(ar);
        // Copy the file contents to the request stream.
        const int bufferLength = 2048;
        byte[] buffer = new byte[bufferLength];
        int count = 0;
        int readBytes = 0;
        FileStream stream = File.OpenRead(state.FileName);
        do
        {
            readBytes = stream.Read(buffer, 0, bufferLength);
            requestStream.Write(buffer, 0, readBytes);
            count += readBytes;
        }
        while (readBytes != 0);
        Console.WriteLine ("Writing {0} bytes to the stream.", count);
        // IMPORTANT: Close the request stream before sending the request.
        requestStream.Close();
        // Asynchronously get the response to the upload request.
        state.Request.BeginGetResponse(
            new AsyncCallback (EndGetResponseCallback),
            state
        );
    }
    // Return exceptions to the main application thread.
    catch (Exception e)
    {
        Console.WriteLine("Could not get the request stream.");
        state.OperationException = e;
        state.OperationComplete.Set();
        return;
    }
}

Poznámky

Musíte dokončit asynchronní operaci voláním EndGetResponse metody. Obvykle je volána metodou, EndGetResponse na kterou odkazuje .callback Chcete-li zjistit stav operace, zkontrolujte vlastnosti v objektu IAsyncResult vrácené metodou BeginGetResponse .

Proxy Pokud je vlastnost nastavená, buď přímo, nebo v konfiguračním souboru, komunikace se serverem FTP probíhá prostřednictvím zadaného proxy serveru.

BeginGetResponse neblokuje při čekání na odpověď ze serveru. Pokud chcete blokovat, zavolejte metodu GetResponse místo metody BeginGetResponse.

Další informace o použití asynchronního programovacího modelu najdete v tématu Asynchronní volání synchronních metod.

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Poznámka

WebException Pokud je vyvolán, pomocí Response vlastností a Status výjimky určete odpověď ze serveru.

Poznámky pro volající

Tato metoda generuje síťový provoz.

Platí pro

Viz také