FtpWebRequest.GetResponse Metodo

Definizione

Restituisce la risposta del server 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

Restituisce

Riferimento WebResponse in cui è contenuta un'istanza di FtpWebResponse. Questo oggetto contiene la risposta del server FTP alla richiesta.

Eccezioni

Il metodo GetResponse() oppure il metodo BeginGetResponse(AsyncCallback, Object) è gia stato chiamato per questa istanza.

-oppure-

Un proxy HTTP è attivo e si è tentato di utilizzare un comando FTP diverso da DownloadFile, ListDirectory oppure ListDirectoryDetails.

La proprietà EnableSsl è impostata su true, ma il server non supporta questa funzionalità.

-oppure-

Un Timeout è stato specificato e il timeout è scaduto.

Esempio

Nell'esempio di codice seguente viene illustrata la copia di un file nel flusso di dati di una richiesta e l'invio di una richiesta di accodamento dei dati a un file al server. Nell'esempio viene chiamato GetResponse per inviare la richiesta e bloccare finché la risposta non viene restituita dal server.

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;
}

Commenti

Per accedere alle proprietà specifiche di FTP, è necessario eseguire il cast dell'oggetto WebResponse restituito da questo metodo a FtpWebResponse.

GetResponse determina la creazione di una connessione di controllo e la creazione di una connessione dati. GetResponse blocca fino a quando non viene ricevuta la risposta. Per evitare questo problema, è possibile eseguire questa operazione in modo asincrono chiamando i BeginGetResponse metodi e EndGetResponse al posto di GetResponse.

Se la Proxy proprietà è impostata, direttamente o in un file di configurazione, le comunicazioni con il server FTP vengono effettuate tramite il proxy.

Se viene generata un'eccezione WebException , utilizzare le Response proprietà e Status dell'eccezione per determinare la risposta dal server.

Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. Per altre informazioni, vedere Traccia di rete in .NET Framework.

Nota

Più chiamate per GetResponse restituire lo stesso oggetto risposta. La richiesta non viene ristampata.

Note per i chiamanti

Questo metodo genera il traffico di rete.

Si applica a

Vedi anche