FtpWebRequest.GetResponse Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает ответ 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
Возвращаемое значение
Ссылка WebResponse, которая содержит экземпляр FtpWebResponse. Этот объект содержит ответ FTP-сервера на запрос.
Исключения
GetResponse() или BeginGetResponse(AsyncCallback, Object) уже был вызван для этого экземпляра.
-или-
Прокси-сервер HTTP включен, и была предпринята попытка использования FTP-команды, отличной от DownloadFile, ListDirectory или ListDirectoryDetails.
Значение свойства EnableSsl равно true
, однако сервер не поддерживает эту функциональную возможность.
-или-
Срок ожидания Timeout был указан и истек.
Примеры
В следующем примере кода показано копирование файла в поток данных запроса и отправка запроса на добавление данных в файл на сервер. В примере вызывается GetResponse для отправки запроса и блокировки до тех пор, пока ответ не будет возвращен сервером.
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","[email protected]" );
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","[email protected]");
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;
}
Комментарии
Чтобы получить доступ к свойствам FTP, необходимо привести WebResponse объект, возвращенный этим методом, к FtpWebResponse.
GetResponse вызывает подключение к элементу управления, а также может создать подключение к данным. GetResponse блокируется до получения ответа. Чтобы избежать этого, можно выполнить эту операцию асинхронно, вызвав BeginGetResponse методы и EndGetResponse вместо GetResponse.
Proxy Если свойство задано напрямую или в файле конфигурации, обмен данными с FTP-сервером осуществляется через прокси-сервер.
Если возникает WebException исключение , используйте Response свойства и Status исключения, чтобы определить ответ от сервера.
Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в .NET Framework.
Примечание
Несколько вызовов для GetResponse возврата одного и того же объекта ответа; запрос не выполняется повторно.
Примечания для тех, кто вызывает этот метод
Этот метод создает сетевой трафик.