Листинг 2. Исходный текст объекта сервера
Option Explicit
? Типы валют
Public Enum CurrencyID
curRUR
curUSD
curEUR
End Enum
? Соотношения курсов
Private Const RubEur As Double = 23.88
Private Const RubUsd As Double = 27.77
Private Const EurUsd As Double = 1.16
Private Const EurRub As Double = 4.18
Private Const UsdRub As Double = 3.61
Private Const UsdEur As Double = 0.86
? Функция возврата курса
Public Function GetQuotation(ByVal CurID1 As CurrencyID, _
ByVal CurID2 As CurrencyID) As Double
If CurID1 = CurID2 Then
GetQuotation = 1
ElseIf CurID1 = curRUR And CurID2 = curEUR Then
GetQuotation = RubEur
ElseIf CurID1 = curRUR And CurID2 = curUSD Then
GetQuotation = RubUsd
ElseIf CurID1 = curEUR And CurID2 = curUSD Then
GetQuotation = EurUsd
ElseIf CurID1 = curEUR And CurID2 = curRUR Then
GetQuotation = EurRub
ElseIf CurID1 = curUSD And CurID2 = curRUR Then
GetQuotation = UsdRub
ElseIf CurID1 = curUSD And CurID2 = curEUR Then
GetQuotation = UsdEur
Else
GetQuotation = 0
End If
End Function
Листинг 3. Создание соединения с сервером
? Строка описания сервера
Dim m_sServicesDescription As String
? Установка соединения и запрос SDL
Private Sub m_btnConnect_Click()
On Error GoTo ErrHandler
? Объект библиотеки ROPE, необходимый для создания
соединения
Dim oSOAP As ROPE.SOAPPackager
Set oSOAP = New ROPE.SOAPPackager
? Попытка соединения с сервером
Dim bRetVal As Boolean
bRetVal = oSOAP.LoadServicesDescription(icURI, _
m_txtURL)
If (bRetVal = False) Then
? Обработка ошибки соединения
MsgBox ?LoadServicesDescription = False?, , _
?LoadServicesDescription FAILED?
Exit Sub
End If
? Получение описания сервиса
m_sServicesDescription = oSOAP.ServicesDescription
Exit Sub
ErrHandler:
MsgBox ?Error # ? & CStr(Err.Number) & _
?, Description = ? & Err.Description, vbCritical
End Sub
Вернуться
Листинг 4. Вызов метода объекта с помощью библиотеки SOAP
? Вызов метода
Private Sub m_cmdGetQuotation_Click()
On Error Resume Next
? Создание объекта Proxy
Dim oProxy As ROPE.Proxy
Set oProxy = New ROPE.Proxy
? Загрузка SDL-файла
oProxy.LoadServicesDescription icSTRING, _
m_sServicesDescription
? Определение выбора пользователя
Dim curID1 As CurrencyID
Dim curID2 As CurrencyID
If m_chkEUR1.Value = True Then
curID1 = curEUR
ElseIf m_chkUSD1.Value = True Then
curID1 = curUSD
ElseIf m_chkRUR1.Value = True Then
curID1 = curRUR
End If
If m_chkEUR2.Value = True Then
curID2 = curEUR
ElseIf m_chkUSD2.Value = True Then
curID2 = curUSD
ElseIf m_chkRUR2.Value = True Then
curID2 = curRUR
End If
? Вызов метода сервера через объект Proxy
Dim dQuotation As Double
dQuotation = oProxy.GetQuotation(curID1, curID2)
? Вывод на экран XML-текста запроса SOAP
Dim sDataSent As String
sDataSent = oProxy.DataSent
MsgBox sDataSent, , ?sDataSent?
? Вывод на экран XML-текста ответа SOAP
Dim sDataReceived As String
sDataReceived = oProxy.DataReceived
MsgBox sDataReceived, , ?sDataReceived?
? Восстановление курсора
oHourglassClass.Restore
? Вывод результатов
m_txtQuotation = CStr(dQuotation)
End Sub
|