Нужна помощь по CHTTP

7 views
Skip to first unread message

Анатолий Долидович

unread,
Sep 20, 2022, 9:01:36 AM9/20/22
to cla...@googlegroups.com
Здравствуй, 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

Александр Агеев

unread,
Sep 20, 2022, 10:45:52 AM9/20/22
to cla...@googlegroups.com
Ой давно дело было.... Плохо помню... Но вроде как надо в заголовке запроса поставить NOCACHE. А вот как и где - хоть убей не помню...

вт, 20 сент. 2022 г. в 20:01, 'Анатолий Долидович' via ClaList <cla...@googlegroups.com>:
--
Вы получили это сообщение, поскольку подписаны на группу ClaList.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/clalist/1115311240.20220920160133%40asb.by.

Анатолий Долидович

unread,
Sep 21, 2022, 3:12:33 AM9/21/22
to cla...@googlegroups.com
Всем доброго времени суток!

Если бы еще где-то дока была, был бы весьма благодарен, можно скинуть
на этот мой почтовый адрес.

Rimantas Nedzinskas

unread,
Sep 21, 2022, 4:31:59 AM9/21/22
to cla...@googlegroups.com

--
Вы получили это сообщение, поскольку подписаны на группу ClaList.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/clalist/1073976094.20220921101230%40asb.by.

Анатолий Долидович

unread,
Sep 21, 2022, 4:45:47 AM9/21/22
to cla...@googlegroups.com
В методе CHTTP.Connect задается флаг подключения
Self.DwFlags=INTERNET_INVALID_PORT_NUMBER
Дополнительные флаги:
INTERNET_FLAG_NO_CACHE_WRITE+INTERNET_FLAG_DONT_CACHE
не помогают.

Анатолий Долидович

unread,
Sep 21, 2022, 9:24:20 AM9/21/22
to cla...@googlegroups.com
Римантас, спасибо, я прочитал содержание страницы,в принципе то же
самое мне поисковик в браузере предложил
А как я могу повлиять на заголовок HTTP-пакета? Так и не разобрался.

Rimantas Nedzinskas

unread,
Sep 21, 2022, 10:18:20 AM9/21/22
to cla...@googlegroups.com
Нужно добавить заголовок HTTP-запроса Cache-Control. Таким же образом, как и другие заголовки, (Authorization, Accept и т.д.)
Я не знаю, как это делается в CHTTP.

По-моему в этом случае надо установить значение заголовка 'no-store', а не 'no-cache'. 

Cache-Control: no-store


Римас 



--
Вы получили это сообщение, поскольку подписаны на группу ClaList.

Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес clalist+u...@googlegroups.com.
Просмотреть это обсуждение в Сети можно по адресу https://groups.google.com/d/msgid/clalist/1922422175.20220921162418%40asb.by.
Reply all
Reply to author
Forward
0 new messages