Программирование >>  Программирование с использованием ajax 

1 ... 332 333 334 [ 335 ] 336 337 338 ... 396


Конкретные реализации этих базовых классов - 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. Значения свойств элементов управления

Тип элемента управления

Свойство

FtpClientWindow

Title= FTP Client

ListBox

listFiles

ItemsSource= {Binding}

Label

labelServer

Content= Server:

Label

labelUserName

Content= Username:

Label

labelPassword

Content= Password:

TextBox

textServer

Text= ftp:

TextBox

textUserName

Text= Anonymous

PasswordBox

passwordBox

Button

buttonOpen

Content= 0pen

Button

buttonOpenDirectory

Content= 0pen Directory

Button

buttonGetFile

Content= Get File

CheckBox

checkBoxBinary

Content= Binary Mode



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;



1 ... 332 333 334 [ 335 ] 336 337 338 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика