Данная статья переведена с помощью средств машинного перевода. Чтобы просмотреть ее на английском языке, установите флажок Английский. Вы также можете просматривать английский текст во всплывающем окне, наводя указатель мыши на переведенный текст.
Перевод
Английский

Класс FtpWebRequest

 

Опубликовано: Октябрь 2016

Реализует FTP-клиент.

Пространство имен:   System.Net
Сборка:  System (в System.dll)


public sealed class FtpWebRequest : WebRequest

ИмяОписание
System_CAPS_pubpropertyAuthenticationLevel

Возвращает или задает значения, указывающие уровень проверки подлинности и олицетворения, используемые для этого запроса.(Наследуется от WebRequest.)

System_CAPS_pubpropertyCachePolicy

Возвращает или задает политику кэширования для этого запроса.(Наследуется от WebRequest.)

System_CAPS_pubpropertyClientCertificates

Возвращает или задает сертификаты, используемые для установки и шифрования подключения к FTP-серверу.

System_CAPS_pubpropertyConnectionGroupName

Возвращает или задает имя группы подключения, которая содержит точку обслуживания, используемую для отправки текущего запроса.(Переопределяет WebRequest.ConnectionGroupName.)

System_CAPS_pubpropertyContentLength

Этот API поддерживает инфраструктуру продукт, и его не следует использовать напрямую из кода. Возвращает или задает значение, игнорируемое классом FtpWebRequest.(Переопределяет WebRequest.ContentLength.)

System_CAPS_pubpropertyContentOffset

Возвращает или задает смещение в байтах для файла, скачиваемого через этот запрос.

System_CAPS_pubpropertyContentType

Этот API поддерживает инфраструктуру продукт, и его не следует использовать напрямую из кода. Всегда создает исключение NotSupportedException.(Переопределяет WebRequest.ContentType.)

System_CAPS_pubpropertyCreatorInstance

Устарело. Если переопределено в производном классе, получает объект фабрики, производный от класса IWebRequestCreate, который служит для создания объекта WebRequest для создания запроса по указанному универсальному коду ресурса (URI).(Наследуется от WebRequest.)

System_CAPS_pubpropertyCredentials

Возвращает или задает учетные данные, используемые для связи с FTP-сервером.(Переопределяет WebRequest.Credentials.)

System_CAPS_pubpropertySystem_CAPS_staticDefaultCachePolicy

Определяет политику кэширования по умолчанию для всех запросов FTP.

System_CAPS_pubpropertyEnableSsl

Возвращает или задает объект Boolean, который указывает, что необходимо использовать SSL-соединение.

System_CAPS_pubpropertyHeaders

Этот API поддерживает инфраструктуру продукт, и его не следует использовать напрямую из кода. Возвращает пустой объект WebHeaderCollection.(Переопределяет WebRequest.Headers.)

System_CAPS_pubpropertyImpersonationLevel

Возвращает или задает уровень олицетворения для текущего запроса.(Наследуется от WebRequest.)

System_CAPS_pubpropertyKeepAlive

Возвращает или задает значение Boolean, которое указывает, следует ли закрывать управляющее подключение к FTP-серверу после завершения запроса.

System_CAPS_pubpropertyMethod

Возвращает или задает команду, которая будет отправлена на FTP-сервер.(Переопределяет WebRequest.Method.)

System_CAPS_pubpropertyPreAuthenticate

Этот API поддерживает инфраструктуру продукт, и его не следует использовать напрямую из кода. Всегда создает исключение NotSupportedException.(Переопределяет WebRequest.PreAuthenticate.)

System_CAPS_pubpropertyProxy

Возвращает или задает прокси-сервер, используемый для связи с FTP-сервером.(Переопределяет WebRequest.Proxy.)

System_CAPS_pubpropertyReadWriteTimeout

Возвращает или задает время ожидания при записи в поток или при чтении из него.

System_CAPS_pubpropertyRenameTo

Возвращает или задает новое имя переименовываемого файла.

System_CAPS_pubpropertyRequestUri

Возвращает универсальный код ресурса (URI), запрошенный этим экземпляром.(Переопределяет WebRequest.RequestUri.)

System_CAPS_pubpropertyServicePoint

Возвращает объект ServicePoint, используемый для подключения к FTP-серверу.

System_CAPS_pubpropertyTimeout

Возвращает или задает количество миллисекунд для ожидания запроса.(Переопределяет WebRequest.Timeout.)

System_CAPS_pubpropertyUseBinary

Возвращает или задает значение Boolean, которое указывает тип данных для передачи файлов.

System_CAPS_pubpropertyUseDefaultCredentials

Этот API поддерживает инфраструктуру продукт, и его не следует использовать напрямую из кода. Всегда создает исключение NotSupportedException.(Переопределяет WebRequest.UseDefaultCredentials.)

System_CAPS_pubpropertyUsePassive

Возвращает или задает поведение процесса передачи данных в клиентском приложении.

ИмяОписание
System_CAPS_pubmethodAbort()

Прерывает асинхронную операцию FTP.(Переопределяет WebRequest.Abort().)

System_CAPS_pubmethodBeginGetRequestStream(AsyncCallback, Object)

Начинает асинхронное открытие потока с содержимым запроса для записи.(Переопределяет WebRequest.BeginGetRequestStream(AsyncCallback, Object).)

System_CAPS_pubmethodBeginGetResponse(AsyncCallback, Object)

Начинает асинхронно отправлять запрос и получать ответ с FTP-сервера.(Переопределяет WebRequest.BeginGetResponse(AsyncCallback, Object).)

System_CAPS_pubmethodCreateObjRef(Type)

Создает объект, который содержит все необходимые сведения, необходимые для создания прокси-сервер, используемый для обмена данными с удаленным объектом.(Наследуется от MarshalByRefObject.)

System_CAPS_pubmethodEndGetRequestStream(IAsyncResult)

Завершает асинхронную операцию в очереди, начинавшуюся с BeginGetRequestStream.(Переопределяет WebRequest.EndGetRequestStream(IAsyncResult).)

System_CAPS_pubmethodEndGetResponse(IAsyncResult)

Завершает асинхронную операцию в очереди, начинавшуюся с BeginGetResponse.(Переопределяет WebRequest.EndGetResponse(IAsyncResult).)

System_CAPS_pubmethodEquals(Object)

Определяет, равен ли заданный объект текущему объекту.(Наследуется от Object.)

System_CAPS_pubmethodGetHashCode()

Служит хэш-функцией по умолчанию.(Наследуется от Object.)

System_CAPS_pubmethodGetLifetimeService()

Извлекает объект текущее время существования службы, который управляет политикой времени существования данного экземпляра.(Наследуется от MarshalByRefObject.)

System_CAPS_pubmethodGetRequestStream()

Возвращает поток, используемый для выгрузки данных на FTP-сервер.(Переопределяет WebRequest.GetRequestStream().)

System_CAPS_pubmethodGetRequestStreamAsync()

Если переопределено во вложенном классе, возвращает Stream для записи данных в интернет-ресурс в ходе асинхронной операции.(Наследуется от WebRequest.)

System_CAPS_pubmethodGetResponse()

Возвращает ответ FTP-сервера.(Переопределяет WebRequest.GetResponse().)

System_CAPS_pubmethodGetResponseAsync()

Если переопределено во вложенном классе, возвращает ответ на интернет-запрос в ходе асинхронной операции.(Наследуется от WebRequest.)

System_CAPS_pubmethodGetType()

Возвращает объект Type для текущего экземпляра.(Наследуется от Object.)

System_CAPS_pubmethodInitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.(Наследуется от MarshalByRefObject.)

System_CAPS_pubmethodToString()

Возвращает строку, представляющую текущий объект.(Наследуется от Object.)

ИмяОписание
System_CAPS_pubinterfaceSystem_CAPS_privmethodISerializable.GetObjectData(SerializationInfo, StreamingContext)

Этот API поддерживает инфраструктуру продукт, и его не следует использовать напрямую из кода. Если переопределено во вложенном классе, заполняет экземпляр SerializationInfo данными, которые необходимы для сериализации WebRequest.(Наследуется от WebRequest.)

Чтобы получить экземпляр FtpWebRequest, используйте Create метод. Можно также использовать WebClient класс для отправки и загрузки сведений с FTP-сервера. С помощью этих подходов, при указании сетевого ресурса, использующего схему FTP (например, "ftp://contoso.com") FtpWebRequest предоставляет возможность программно взаимодействовать с FTP-серверов.

URI может быть относительным или абсолютным. Если URI имеет вид "ftp://contoso.com/%2fpath" (% 2f — это косая «/»), то URI является абсолютным, и текущий каталог является /path. Если, однако, URI имеет вид "ftp://contoso.com/path", сначала .NET Framework выполняет вход в FTP-сервера (задается с помощью имени пользователя и пароля Credentials Свойства), то текущий каталог будет присвоено значение <UserLoginDirectory>/path.

Необходимо иметь допустимое имя пользователя и пароль для сервера или сервера необходимо разрешить анонимный вход. Можно указать учетные данные, используемые для подключения к серверу, задав Credentials свойства или включить их в UserInfo часть URI, передаваемый Create метод. При включении UserInfo сведения в URI, Credentials свойству новые сетевые учетные данные с учетом указанного пользователя имя и пароль.

System_CAPS_cautionВнимание!

Если EnableSsl свойство true, все данные и команды, включая имя и пароль, сведения о пользователе, отправляются на сервер в виде открытого текста. Любой наблюдение за сетевым трафиком можно просмотреть свои учетные данные и использовать их для подключения к серверу. При подключении к FTP-серверу, требуются учетные данные и поддерживает Secure Sockets Layer (SSL), необходимо установить EnableSsl для true.

Необходимо иметь WebPermission для доступа к FTP-ресурса; в противном случае — SecurityException исключения.

Укажите команды FTP для отправки на сервер, установив Method свойству значение, определенное в WebRequestMethods.Ftp структуру. Для передачи текстовых данных, измените UseBinary свойство со значением по умолчанию (true) для false. Дополнительные сведения и ограничения см. в разделе Method.

При использовании FtpWebRequest объекта для отправки файла на сервере, необходимо написать его содержимого в поток запроса, полученные с помощью вызова GetRequestStream метода или его асинхронных аналоги, BeginGetRequestStream и EndGetRequestStream методы. Необходимо записать в поток и закрыть поток перед отправкой запроса.

Запросы отправляются на сервер, вызвав GetResponse метода или его асинхронных аналоги, BeginGetResponse и EndGetResponse методы. После завершения запрошенной операции FtpWebResponse возвращается объект. FtpWebResponse Объект предоставляет сведения о состоянии операции, а также любые данные, загруженные с сервера.

Можно задать значение времени ожидания для чтения или записи к серверу с помощью ReadWriteTimeout свойство. В случае превышения времени ожидания, вызывает метод вызова WebException с WebExceptionStatus значение Timeout.

При загрузке файла с FTP-сервера, если команда выполнена успешно, содержимое запрошенного файла доступны в потоке объекта ответа. Доступ к этот поток путем вызова GetResponseStream метод. Для получения дополнительной информации см. FtpWebResponse.

Если Proxy свойству, либо напрямую или в файле конфигурации, связь с FTP-сервера выполняются через указанный прокси-сервер. Если указанный прокси является HTTP-прокси, только DownloadFile, ListDirectory, и ListDirectoryDetails команды поддерживаются.

Кэшируется только для загрузки двоичного содержимого; то есть, содержимое, полученных с помощью DownloadFile с UseBinary свойству true.

Несколько FtpWebRequests повторного использования существующих подключений, если это возможно.

Дополнительные сведения о протоколе FTP см. RFC 959, «File Transfer Protocol, «найти по адресу http://www.rfc-editor.org/.

В следующем примере кода показано удаление файла с FTP-сервера.

public static bool DeleteFileOnServer(Uri serverUri)
{
    // The serverUri parameter should use the ftp:// scheme.
    // It contains the name of the server file that is to be deleted.
    // Example: ftp://contoso.com/someFile.txt.
    // 

    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.DeleteFile;

    FtpWebResponse response = (FtpWebResponse) request.GetResponse();
    Console.WriteLine("Delete status: {0}",response.StatusDescription);  
    response.Close();
    return true;
}

В следующем примере кода демонстрируется загрузка файла с FTP-сервера с помощью WebClient класса.

public static bool DisplayFileFromServer(Uri serverUri)
{
    // The serverUri parameter should start with the ftp:// scheme.
    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
        return false;
    }
    // Get the object used to communicate with the server.
    WebClient request = new WebClient();

    // This example assumes the FTP site uses anonymous logon.
    request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");
    try 
    {
        byte [] newFileData = request.DownloadData (serverUri.ToString());
        string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
        Console.WriteLine(fileString);
    }
    catch (WebException e)
    {
        Console.WriteLine(e.ToString());
    }
    return true;
}

В следующем примере кода демонстрируется использование асинхронных операций для отправки файла на FTP-сервер.

using System;
using System.Net;
using System.Threading;

using System.IO;
namespace Examples.System.Net
{
    public class FtpState
    {
        private ManualResetEvent wait;
        private FtpWebRequest request;
        private string fileName;
        private Exception operationException = null;
        string status;

        public FtpState()
        {
            wait = new ManualResetEvent(false);
        }

        public ManualResetEvent OperationComplete
        {
            get {return wait;}
        }

        public FtpWebRequest Request
        {
            get {return request;}
            set {request = value;}
        }

        public string FileName
        {
            get {return fileName;}
            set {fileName = value;}
        }
        public Exception OperationException
        {
            get {return operationException;}
            set {operationException = value;}
        }
        public string StatusDescription
        {
            get {return status;}
            set {status = value;}
        }
    }
    public class AsynchronousFtpUpLoader
    {  
        // Command line arguments are two strings:
        // 1. The url that is the name of the file being uploaded to the server.
        // 2. The name of the file on the local machine.
        //
        public static void Main(string[] args)
        {
            // Create a Uri instance with the specified URI string.
            // If the URI is not correctly formed, the Uri constructor
            // will throw an exception.
            ManualResetEvent waitObject;

            Uri target = new Uri (args[0]);
            string fileName = args[1];
            FtpState state = new FtpState();
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target);
            request.Method = WebRequestMethods.Ftp.UploadFile;

            // This example uses anonymous logon.
            // The request is anonymous by default; the credential does not have to be specified. 
            // The example specifies the credential only to
            // control how actions are logged on the server.

            request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");

            // Store the request in the object that we pass into the
            // asynchronous operations.
            state.Request = request;
            state.FileName = fileName;

            // Get the event to wait on.
            waitObject = state.OperationComplete;

            // Asynchronously get the stream for the file contents.
            request.BeginGetRequestStream(
                new AsyncCallback (EndGetStreamCallback), 
                state
            );

            // Block the current thread until all operations are complete.
            waitObject.WaitOne();

            // The operations either completed or threw an exception.
            if (state.OperationException != null)
            {
                throw state.OperationException;
            }
            else
            {
                Console.WriteLine("The operation completed - {0}", state.StatusDescription);
            }
        }
        private static void EndGetStreamCallback(IAsyncResult ar)
        {
            FtpState state = (FtpState) ar.AsyncState;

            Stream requestStream = null;
            // End the asynchronous call to get the request stream.
            try
            {
                requestStream = state.Request.EndGetRequestStream(ar);
                // Copy the file contents to the request stream.
                const int bufferLength = 2048;
                byte[] buffer = new byte[bufferLength];
                int count = 0;
                int readBytes = 0;
                FileStream stream = File.OpenRead(state.FileName);
                do
                {
                    readBytes = stream.Read(buffer, 0, bufferLength);
                    requestStream.Write(buffer, 0, readBytes);
                    count += readBytes;
                }
                while (readBytes != 0);
                Console.WriteLine ("Writing {0} bytes to the stream.", count);
                // IMPORTANT: Close the request stream before sending the request.
                requestStream.Close();
                // Asynchronously get the response to the upload request.
                state.Request.BeginGetResponse(
                    new AsyncCallback (EndGetResponseCallback), 
                    state
                );
            } 
            // Return exceptions to the main application thread.
            catch (Exception e)
            {
                Console.WriteLine("Could not get the request stream.");
                state.OperationException = e;
                state.OperationComplete.Set();
                return;
            }

        }

        // The EndGetResponseCallback method  
        // completes a call to BeginGetResponse.
        private static void EndGetResponseCallback(IAsyncResult ar)
        {
            FtpState state = (FtpState) ar.AsyncState;
            FtpWebResponse response = null;
            try 
            {
                response = (FtpWebResponse) state.Request.EndGetResponse(ar);
                response.Close();
                state.StatusDescription = response.StatusDescription;
                // Signal the main application thread that 
                // the operation is complete.
                state.OperationComplete.Set();
            }
            // Return exceptions to the main application thread.
            catch (Exception e)
            {
                Console.WriteLine ("Error getting response.");
                state.OperationException = e;
                state.OperationComplete.Set();
            }
        }
    }
}

WebPermission

for accessing the resource referenced by this request. Associated enumeration: F:System.Net.NetworkAccess.Connect.

.NET Framework
Доступно с 2.0

Любые открытые статические элементы ( Предоставлен общий доступ в Visual Basic) этого типа являются потокобезопасными. Потокобезопасность элементов экземпляров не гарантируется.

Вернуться в начало
Показ: