|
Программирование >> Программирование с использованием ajax
Конкретные реализации этих базовых классов - HttpWebRequest, FtpWebRequest, FileWebRequest, HttpWebResponse, FtpWebResponse и FileWebResponse. Протокол HTTP используется классами HttpWebXXX, классы FtpWebXXX применяют протокол FTP, а классы FileWebXXX обеспечивают доступ к файловой системе. Создание FTP-клиента с помощью класса FtpWebRequest - простая задача. В следующем практическом занятии мы создадим Windows-приложение, которое загружает файлы с РТР-сервера. Получение файла с ГГР-сервера 1. Создайте новое WPF-пpL7IOжeниe по имени FtpClient в каталоге С: \BegVCSharp\ Chapter32. 2. Переименуйте файл Windowi.xaml в FtpClientWindow.xaml. Переименуйте класс Windowi в FtpClientWindow. В файле App.xaml измените ссылку на FtpClientWindow.xaml. 3. В главное окно добавьте элементы управления, показанные на рис. 32.7. Рис. 32.7. Главное окно приложения FtpClient Элементы управления этой формы и настройки их свойств приведены в табл. 32.4. Таблица 32.4. Значения свойств элементов управления Тип элемента управления Свойство
XAML-код определения окна имеет следующий вид: <Window x:Class= FtpClient.FtpClientWindow xmlns= http: schemas.microsoft.com/winfх/2006/xaml/presentation xmlns:x= http: schemas.microsoft.com/winfx/2006/xaml Title= FTP Client Height= 300 Width= 800 > <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width= 150 /> <ColumnDefinition Width= * /> <ColumnDefinition Width= * /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height= 40 /> <RowDefinition Height= 40 /> <RowDefinition Height= 40 /> <RowDefinition /> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <Label HorizontalAlignment= Right Grid.Column= 0 Grid.Row= 0 Name= labelServer Margin= 6,6,6,6 > Server: </Label> <Label HorizontalAlignment= Right Grid.Column= 0 Grid.Row= l Name= labelUserName Margin= 6,6,6,6 > Username: </Label> <Label HorizontalAlignment= Right Grid.Column= 0 Grid.Row= 2 Name= labelPassword Margin= 6,6,6,6 > Password: </Label> <TextBox Grid.Column= l Grid.Row= 0 Name= textServer Text= ftp: Margin= 6,6,6,6 /> <TextBox Grid.Column= l Grid.Row= l Name= textUserName Text= Anonymous Margin= 6,6,6,6 /> <PasswordBox Grid.Column= l Grid.Row= 2 Name= passwordBox Margin= 6,6,6,6 /> <ListBox ItemsSource= {Binding} Margin= 12,12,12,12 x:Name= listFiles Grid.Column= 0 Grid.Row= 3 Grid.ColumnSpan= 2 Grid.RowSpan= 3 /> <Button Grid.Column= 2 Grid.Row= 0 x:Name= buttonOpen Margin= 6,6,6,6 > Open </Button> <Button Grid.Column= 2 Grid.Row= l x:Name= buttonOpenDirectory IsEnabled= False Margin= 6,6,6,6 > Open Directory </Button> <Button Grid.Column= 2 Grid.Row= 2 x:Name= buttonGetFile IsEnabled= False Margin= 6,6,6,6 > Get File </Button> <CheckBox HorizontalAlignment= Left VerticalAlignment= Center Grid.Column= 2 Grid.Row= 3 x:Name= checkBoxBinary Margin= 8,8,8,8 > Binary Mode </CheckBox> </Grid> </Window> 4. Используя редактор свойств Property Editor, установите значение свойства IsEnabled кнопок buttonOetFile и buttonOpenDirectory равным false. Эти кнопки активны только при выбранном файле. 5. В файле кода импортируйте пространства имен System.Net, System. 10 и Microsoft.Win32. 6. Добавьте переменную serverDirectory в качестве приватного члена класса FtpClientWindow: public partial class FtpClientWindow : Window { private string serverDirectory; 7. Добавьте вспомогательный метод FillDirectoryList в класс FtpClientWindow. Этот метод заполняет listBox всеми данными, находящимися внутри аргумента stream: private void FillDirectoryList(Stream stream) { StreamReader reader = new StreamReader(stream); string content = reader.ReadToEnd(); string[] files = content.Split(\n); this.DataContext = files; reader.Close (); 8. Для создания начального соединения с сервером добавьте обработчик события Click по имени buttonOpen Click к кнопке buttonOpen. Добавьте реализацию обработчика, которая показана ниже: private void buttonOpen Click(object sender, RoutedEventArgs e) { Cursor currentCursor = this.Cursor; FtpWebResponse response = null; Stream stream = null; this.Cursor = Cursors.Wait; Создание объекта FtpWebRequest. FtpWebRequest request = (FtpWebRequest)WebRequest.Create(textServer.Text); request.Credentials = new NetworkCredential(textUserName.Text, passwordBox.Password); request.Method = WebRequestMethods.Ftp.ListDirectory; Отправка запроса серверу. response = (FtpWebResponse)request.GetResponse(); Считывание ответа и заполнение поля списка, stream = response.GetResponseStream (); FillDirectoryList(stream); serverDirectory = null; buttonOpenDirectory.IsEnabled = false; buttonGetFile.IsEnabled = false; catch (WebException ex) { MessageBox.Show(ex.Message, Error FTP Client , MessageBoxButton.OK, MessageBoxImage.Error); catch (lOException ex) { MessageBox.Show(ex.Message, Error FTP Client , MessageBoxButton.OK, MessageBoxImage.Error); finally { if (response != null) response.Close (); if (stream != null) stream.Close (); this.Cursor = currentCursor;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |