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

Шрифт
Интервал

стр.

> Dim inBuffer() As Byte

> ReDim inBuffer(BUFFER_SIZE)

> Dim bytesRead As Integer


> Do

>  'Считать байты из порта IR

>  bytesRead = irStreamIn.Read(inBuffer, 0, BUFFER_SIZE)

>  'Записать байты в наш выходной поток

>  If (bytesRead > 0) Then

>   outputStream.Write(inBuffer, 0, bytesRead)

>  End If

> Loop While (bytesRead > 0)


> outputStream.Flush() 'Закончить запись любых выходных данных


> '==========================================

> 'ОБНОВЛЕНИЕ СОСТОЯНИЯ: УСПЕШНО ВЫПОЛНЕНО

> '==========================================

> setStatus(ReceiveStatus.Done_Success)

> Return 'No errors


> '==========================================

> 'ОШИБКА.

> '==========================================

>exit_sub_with_abort:

> 'ОБНОВЛЕНИЕ СОСТОЯНИЯ: Отменено (но не из-за ошибки)

> setStatus(ReceiveStatus.Done_Aborted)

> Return


>exit_sub_with_error:

> 'ОБНОВЛЕНИЕ СОСТОЯНИЯ: ОШИБКА!!!!

> setStatus(ReceiveStatus.Done_ErrorOccured)

> End Sub

>End Class

Листинг 15.6. Простая Web-служба

>'Этот код следует вставить в класс Service1, содержащийся

>'в файле "Service1.asmx.vb".

>'"[WebMethod]" - это атрибут метаданных, который указывает механизму

>'Web-службы на то, что данный метод должен быть доступным через Web

> _

>Public Function AddTwoNumbers(ByVal x As Integer, _

> ByVal у As Integer) As Integer

> Return x + у

>End Function

Листинг 15.7. Вызовы Web-служб с передачей параметров только явным образом

Этот код представляет собой всего лишь последовательность вызовов функций. Программистам на VB будет несложно написать его, используя в качестве образца код на С#.

Листинг 15.8. Вызов Web-служб путем неявной передачи параметров посредством cookie-файлов

Этот код представляет собой всего лишь последовательность вызовов функций. Программистам на VB будет несложно написать его, используя в качестве образца код на С#.

Листинг 15.9. Неэффективная организация диалога с Web-службой, в которой используется множество вызовов

Этот код представляет собой всего лишь последовательность вызовов функций. Программистам на VB будет несложно написать его, используя в качестве образца код на С#.

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

Этот код представляет собой всего лишь последовательность вызовов функций. Программистам на VB будет несложно написать его, используя в качестве образца код на С#.

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

>'----------------------------------------------------------

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

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

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

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

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

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

>'----------------------------------------------------------

>Public Sub downloadFileToLocalStore(ByVal httpWhereFrom As _

> String, ByVal filenameWhereTo As String)

> Dim myFileStream As System.IO.FileStream = Nothing

> Dim myHTTPResponseStream As System.IO.Stream = Nothing

> Dim myWebRequest As System.Net.WebRequest = Nothing

> Dim myWebResponse As System.Net.WebResponse = Nothing


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

> If (System.IO.File.Exists(filenameWhereTo) = True) Then

>  System.IO.File.Delete(filenameWhereTo)

> End If

> Try

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

>  myWebRequest = _

>   System.Net.HttpWebRequest.Create(httpWhereFrom)

>  'Получить ответ

>  myWebResponse = myWebRequest.GetResponse()

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

>  myHTTPResponseStream = myWebResponse.GetResponseStream()

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

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


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

>  Const buffer_length As Integer = 4000

>  Dim byteBuffer() As Byte

>  ReDim byteBuffer(buffer_length)

>  Dim bytesIn As Integer


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

>  Do

>   'Считать данные

>   bytesIn = myHTTPResponseStream.Read(byteBuffer, _

>    0, buffer_length)

>   'Записать данные

>   If (bytesIn <> 0) Then

>    myFileStream.Write(byteBuffer, 0, bytesIn)

>   End If

>  Loop While (bytesIn <> 0)

> Catch myException As Exception 'Сбой при загрузке!


стр.

Похожие книги