Condividi tramite


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 per aggiungere dati a un file al server. L'esempio chiama 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 causa la creazione di una connessione al controllo e può anche creare una connessione dati. GetResponse blocca finché 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 eseguite tramite il proxy.

Se viene generato un WebException oggetto, usare 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 di risposta. La richiesta non viene ripubblicata.

Note per i chiamanti

Questo metodo genera il traffico di rete.

Si applica a

Vedi anche