FtpWebRequest.GetResponse Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna a resposta do 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
Retornos
Uma referência WebResponse que contém uma instância FtpWebResponse. Esse objeto contém a resposta do servidor FTP para a solicitação.
Exceções
GetResponse() ou BeginGetResponse(AsyncCallback, Object) já foi chamado para essa instância.
- ou -
Um proxy HTTP está habilitado e você tentou usar um comando FTP diferente de DownloadFile, ListDirectory ou ListDirectoryDetails.
EnableSsl é definido como true
, mas o servidor não dá suporte a esse recurso.
- ou -
Um Timeout foi especificado e o tempo limite expirou.
Exemplos
O exemplo de código a seguir demonstra a cópia de um arquivo para o fluxo de dados de uma solicitação e o envio de uma solicitação para acrescentar dados a um arquivo ao servidor. O exemplo chama GetResponse para enviar a solicitação e bloquear até que a resposta seja retornada pelo servidor.
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;
}
Comentários
Para acessar as propriedades específicas do FTP, você deve converter o WebResponse objeto retornado por esse método em FtpWebResponse.
GetResponse faz com que uma conexão de controle seja estabelecida e também pode criar uma conexão de dados. GetResponse bloqueia até que a resposta seja recebida. Para evitar isso, você pode executar essa operação de forma assíncrona chamando os BeginGetResponse métodos e EndGetResponse no lugar de GetResponse.
Se a Proxy propriedade estiver definida, diretamente ou em um arquivo de configuração, as comunicações com o servidor FTP serão feitas por meio do proxy.
Se um WebException for gerado, use as Response propriedades e Status da exceção para determinar a resposta do servidor.
Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede no .NET Framework.
Observação
Várias chamadas para GetResponse retornar o mesmo objeto de resposta; a solicitação não é relançada.
Notas aos Chamadores
Esse método gera tráfego de rede.