Чтение онлайн

ЖАНРЫ

Программирование мобильных устройств на платформе .NET Compact Framework

Салмре Иво

Шрифт:

//--------------------------

//Создать и обработать заказ

//--------------------------

//0. Установить связь

int sessionID = someWebService.LogOn(userCredentials);

//1. Вызвать Web-службу и создать новый заказ

int orderID = someWebService.CreateNewOrder(sessionID, userInfo, productInfo);

//2. Вызвать Web-службу
и передать информацию о платеже

someWebService.ConfirmPayment(sessionID, orderID, paymentInfo);

//3. Вызвать Web-службу и передать информацию о доставке

someWebService.ConfirmShipping(sessionID, orderID, shippingAddress);

//4. Вызвать Web-службу и завершить оформление заказа

someWebService.FinalizeOrder(sessionID, orderID);

Листинг 15.10. Группирование запросов в одном вызове Web-службы

//----------------------------------------------------------

//Создать и обработать заказ посредством группового запроса,

//включающего:

// 0. Начало связи

// 1. Создание нового заказа

// 2. Подтверждение платежа

// 3. Подтверждение доставки

// 4. Завершение оформления заказа

//-----------------------------------------------------------

//Сделать все за один раз

someWebService.BatchCreateOrder(userCredentials, userInfo, paymentInfo, shippingAddress);

В листинге 15.11 показан пример кода, который загружает с сервера двоичный файл и сохраняет его локально на устройстве. Этот код может пригодиться вам при загрузке с сервера файлов, подобных файлам изображений.

Листинг 15.11. Код для загрузки файла с Web-сервера

//-----------------------------------------------------------

//Осуществляет синхронную загрузку файла с Web-сервера

//и сохраняет его в локальной файловой системе

// [in] httpWhereFrom: URL-адрес файла

// (например, "http://someserver/somefile.jpg")

// [in] filenameWhereTo: Место, куда необходимо записать файл

// (например, "\\localfile.jpg")

//-----------------------------------------------------------

public void downloadFileToLocalStore(string httpWhereFrom, string filenameWhereTo) {

 System.IO.FileStream myFileStream = null;

 System.IO.Stream myHTTPResponseStream = null;

 System.Net.WebRequest myWebRequest = null;

 System.Net.WebResponse myWebResponse = null;

 //Если файл, который мы хотим записать, уже существует, удалить его

 if (System.IO.File.Exists(filenameWhereTo) == true) {

System.IO.File.Delete(filenameWhereTo);

 }

 try {

//Создать Web-запрос

myWebRequest = System.Net.HttpWebRequest.Create(httpWhereFrom);

//Получить
ответ

myWebResponse = myWebRequest.GetResponse;

//Получить поток для ответа

myHTTPResponseStream = myWebResponse.GetResponseStream;

//Создать локальный файл, в который необходимо направить поток ответа

myFileStream = System.IO.File.OpenWrite(filenameWhereTo);

//Этот размер буфера является настраиваемым

const int buffer_length = 4000;

byte [] byteBuffer = new byte[buffer_length];

int bytesIn;

//Считать файл и направить поток данных в локальный файл

do {

//Считать данные

bytesIn = myHTTPResponseStream.Read(byteBuffer, 0, buffer_length);

//Записать данные

if (bytesIn != 0) {

myFileStream.Write(byteBuffer, 0, bytesIn);

}

} while (bytesIn != 0);

 } catch (Exception myException) //Сбой при загрузке!

 {

//Что-то случилось. Освободить ресурс

attemptCleanup_ThrowNoExceptions(myFileStream, myHTTPResponseStream, myWebResponse);

//Теперь, когда ресурс освобожден, повторно сгенерируем исключение,

//чтобы сообщить приложению о том, что произошел сбой!

throw myException;

 }

 //Загрузка прошла успешно!

 //Закрыть все ресурсы

 try {

//Стандартная процедура закрытия ресурсов

myFileStream.Close;

myFileStream = null;

myHTTPResponseStream.Close;

myHTTPResponseStream = null;

myWebResponse.Close;

myWebResponse = null;

 } catch (Exception myException) //Сбой в процессе закрытия ресурса!

 {

//Что-то случилось. Освободить ресурс

attemptCleanup_ThrowNoExceptions(myFileStream, myHTTPResponseStream, myWebResponse);

//Теперь, когда ресурс освобожден, повторно сгенерируем исключение,

Поделиться с друзьями: