powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / SOAP необходимо передавать запрос повторно
7 сообщений из 7, страница 1 из 1
SOAP необходимо передавать запрос повторно
    #37888671
galinaVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я являюсь клиентом, и при посылке очередного запроса получаю в ответ ошибку
Сбой запроса с состоянием HTTP 404: Not Found
Известно, что в этот момент сервер был недоступен ( перезагружался или проблемы со связью).
Необходимо в таких случаях передавать сообщение повторно, например, через каждые 5 мин, до тех пор, пока не получу успех операции. Подскажите как это сделать?
...
Рейтинг: 0 / 0
SOAP необходимо передавать запрос повторно
    #37888754
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
galinaVL ,

Если клиент написан на COS, то Обработка SOAP и других ошибок в Caché Веб Клиенте , иначе Вы ошиблись форумом.
...
Рейтинг: 0 / 0
SOAP необходимо передавать запрос повторно
    #37889602
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
galinaVL,

Если действительно не ошиблись форумом, для таких вещей идеально подходит Ensemble .
...
Рейтинг: 0 / 0
SOAP необходимо передавать запрос повторно
    #37889911
galinaVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Форумом не ошиблась :) программирую на COS. Спасибо за ссылочки, читаю, разбираюсь.
...
Рейтинг: 0 / 0
SOAP необходимо передавать запрос повторно
    #37889923
galinaVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если для обработки ошибки буду использовать try catch, например:

ClassMethod My(arg1 As %Numeric, arg2 As %Numeric) As %Numeric
{
Set $ZERROR=""
Set client=##class(My.MySoap).%New()

Try {
Set res=client.GetSum(arg1,arg2)
}
Catch {
If $ZERROR["<ZSOAP>" {
Set res = ..My(arg1,arg2)
}
Else {
Set res=$$$ERROR($$$CacheError,$ZERROR)
}
}

Quit res
}

Т.е. в случае ошибки, пытаюсь вновь вызвать метод веб-клиента, и так до тех пор, пока не получу результат.
Корректно ли это? Необходимо, чтобы клиент в случае ошибки через определенный промежуток времени опять повторял попытку связаться с сервером. Как это сделать?
...
Рейтинг: 0 / 0
SOAP необходимо передавать запрос повторно
    #37890021
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
galinaVLТ.е. в случае ошибки, пытаюсь вновь вызвать метод веб-клиента, и так до тех пор, пока не получу результат.
Корректно ли это?Представьте: метод My запустился и и так до тех пор, пока не получу результат . То есть, если сервис недоступен час, то и метод My будет "работать" час. Это синхронный вызов.
В этом случае используйте бесконечный цикл и команду hang .

Метод можно вызвать и асинхронно , используя например, механизм задач (см. класс %SYS.Task и пакет %SYS.Task ) или команду job .
...
Рейтинг: 0 / 0
SOAP необходимо передавать запрос повторно
    #37890042
andrew_tsw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
galinaVL,
В Вашем случае должен сработать следующий подход:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
	set location = "..."
	set username = "test_username"
	set password = "test_password"
	// Default timeout = 30
	set timeout = 30
	
	set maxRetries = 5
	set retries = 1
	
	set success = $$$NO
	
	while (('success) && (retries <= maxRetries))
	{
		set webClient = ..CreateWebClient(location, username, password, timeout)
		try
		{
			set result = webClient.WebMethod()
			set success = $$$YES
		}
		catch ex
		{
			
			w "Error:", ex.DisplayString(), !
			if ($isobject(wc.SoapFault))
			{
				w "SoapFault:",!, wc.SoapFault.AsString(), !
			}
		}
		
		if ('success)
		{
			set retries = retries + 1
			w "sleep 30 seconds...", !
			hang 30
		}
	}


В объекте wc.SoapFault хранится информация об ошибке, которую вернул сервер.
Он будет отсутствовать в двух случаях:
1) Сервер недоступен
2) Сервер не ответил за интервал времени timeout. Ответ - это результат метода или сообщение об ошибке.
В остальных случаях SoapFault содержит дополнительную информацию об ошибке
- ошибка авторизации
- соединение было закрыто до отсылки полного ответа (на сервере)
- ошибка во время выполнения веб-метода и т.д.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / SOAP необходимо передавать запрос повторно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]