> 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 'Сбой при загрузке!