Здравствуй, Clalist.
Нужна помощь по использованию классов CHTTP.
Мой коллега написал веб-сервис, к которому я обращаюсь с помощью
классов CHTTP для получения количества договоров. Задача была
поставлена так, чтобы при количестве договоров большем или равным трем
программа выводила сообщение о том, что нельзя больше трех договоров
иметь, и закрывала форму ввода договора. Я написал функцию, в которой
объявлен локальный экземпляр класса CHTTP. Функция принимает 2
строковых пераметра - idn и var, возвращает long - количество
договоров.
DATA
CH class(CHTTP).
url string(50)
CODE
CH.Connect(GLB:webapiserver,GLB:webapiport)
if CH.Errorcode=0
url = '/GetCountPolice42?Id='&clip(left(idn))&chr(38)&'Var='&clip(var)
CH.GetData(url)
if CH.Errorcode=0
stop('CH.response='&clip(CH.response))
!ответ сервера в виде N,M, где N = 0 при удачном завершении запроса,
!N=-1 при ошибке сервиса
!M-количество договоров (от 0 и т.д.)
if sub(CH.response,1,1)='0'
res=sub(CH.response,3,5)
elsif sub(CH.response,1,2)='-1'
message('Ошибка на стороне InsuranceAPI','Ошибка',icon:hand)
end
else
message('Ошибка получения данных '&CH.Errorcode&'|'&clip(CH.Error),'Ошибка',icon:hand)
end
else
message('Ошибка соединения '&CH.Errorcode&'|'&clip(CH.Error),'Ошибка',icon:hand)
end
CH.Disconnect()
и вызываю ее при нажатии на кнопку "Сохранить".
Если в базе было 0 или 1 договор, программа получает начальное
количество договоров и позволяет вводить их сколько угодно, хотя на
третьем вроде бы должна остановиться. Посмотрели мы в логи сервера, на
котором сервис хостится - а к нему обращене было только первое, а
больше не было! Такое ощущение, что первоначальное количество
договоров где-то закешировалось и постоянно отдается на запрос
(который вроде как и не происходит, потому что второго и так далее
запросов нет в логе). Но если выйти из программы, допустим, на пятом
договоре, попытка ввода шестого договора будет неудачной.
Что еще где можно посмотреть?
--
С уважением,
Анатолий mailto:
anatoli.d...@asb.by