FtpWebRequest.GetResponse Método

Definición

Devuelve la respuesta del servidor FTP.

public:
 override System::Net::WebResponse ^ GetResponse();
public override System.Net.WebResponse GetResponse ();
override this.GetResponse : unit -> System.Net.WebResponse
Public Overrides Function GetResponse () As WebResponse

Devoluciones

Referencia a WebResponse que contiene una instancia de FtpWebResponse. Este objeto contiene la respuesta del servidor FTP a la solicitud.

Excepciones

Ya se ha llamado a GetResponse() o BeginGetResponse(AsyncCallback, Object) para esta instancia.

o bien

Está habilitado un proxy HTTP y se ha intentado utilizar un comando FTP distinto de DownloadFile, ListDirectory o ListDirectoryDetails.

EnableSsl está establecida en true, pero el servidor no admite esta característica.

o bien

Se especificó Timeout y el tiempo de espera ha expirado.

Ejemplos

En el ejemplo de código siguiente se muestra cómo copiar un archivo en el flujo de datos de una solicitud y enviar una solicitud para anexar datos a un archivo al servidor. El ejemplo llama GetResponse a para enviar la solicitud y bloquear hasta que el servidor devuelva la respuesta.

static bool AppendFileOnServer( String^ fileName, Uri^ serverUri )
{
   // The URI described by serverUri should use the ftp:// scheme.
   // It contains the name of the file on the server.
   // Example: ftp://contoso.com/someFile.txt. 
   // The fileName parameter identifies the file containing 
   // the data to be appended to the file on the server.
   if ( serverUri->Scheme != Uri::UriSchemeFtp )
   {
      return false;
   }

   // Get the object used to communicate with the server.
   FtpWebRequest^ request = dynamic_cast<FtpWebRequest^>(WebRequest::Create( serverUri ));
   request->Method = WebRequestMethods::Ftp::AppendFile;
   StreamReader^ sourceStream = gcnew StreamReader( fileName );
   array<Byte>^fileContents = Encoding::UTF8->GetBytes( sourceStream->ReadToEnd() );
   sourceStream->Close();
   request->ContentLength = fileContents->Length;

   // This example assumes the FTP site uses anonymous logon.
   request->Credentials = gcnew NetworkCredential( "anonymous","janeDoe@contoso.com" );
   Stream^ requestStream = request->GetRequestStream();
   requestStream->Write( fileContents, 0, fileContents->Length );
   requestStream->Close();
   FtpWebResponse^ response = dynamic_cast<FtpWebResponse^>(request->GetResponse());
   Console::WriteLine( "Append status: {0}", response->StatusDescription );
   response->Close();
   return true;
}
public static bool AppendFileOnServer(string fileName, Uri serverUri)
{
    // The URI described by serverUri should use the ftp:// scheme.
    // It contains the name of the file on the server.
    // Example: ftp://contoso.com/someFile.txt.
    // The fileName parameter identifies the file containing
    // the data to be appended to the file on the server.

    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
        return false;
    }
    // Get the object used to communicate with the server.
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
    request.Method = WebRequestMethods.Ftp.AppendFile;

    StreamReader sourceStream = new StreamReader(fileName);
    byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
    sourceStream.Close();
    request.ContentLength = fileContents.Length;

    // This example assumes the FTP site uses anonymous logon.
    request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");
    Stream requestStream = request.GetRequestStream();
    requestStream.Write(fileContents, 0, fileContents.Length);
    requestStream.Close();
    FtpWebResponse response = (FtpWebResponse) request.GetResponse();

    Console.WriteLine("Append status: {0}",response.StatusDescription);

    response.Close();
    return true;
}

Comentarios

Para tener acceso a las propiedades específicas de FTP, debe convertir el WebResponse objeto devuelto por este método a FtpWebResponse.

GetResponse hace que se establezca una conexión de control y también puede crear una conexión de datos. GetResponse se bloquea hasta que se recibe la respuesta. Para evitar esto, puede realizar esta operación de forma asincrónica llamando a los BeginGetResponse métodos y EndGetResponse en lugar de GetResponse.

Si se establece la Proxy propiedad, ya sea directamente o en un archivo de configuración, las comunicaciones con el servidor FTP se realizan a través del proxy.

Si se produce una WebException excepción , use las Response propiedades y Status de la excepción para determinar la respuesta del servidor.

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Nota

Varias llamadas para devolver el mismo objeto de respuesta; la solicitud no se vuelve a GetResponse emitir.

Notas a los autores de las llamadas

Este método genera tráfico de red.

Se aplica a

Consulte también