Вопрос собственно в заголовке, есть примеры что дергать? 

Нравится

1 комментарий

Добрый день, Андрей!

Не совсем понял ваш вопрос, но начиная с версии 7.17.4 можно вызвать веб-сервис с помощью следующего кода:

 

using Terrasoft.Configuration.ServiceSchema;
 
//...
 
try {
    // Создаем экземпляр ServiceSchemaClient
    var client = ClassFactory.Get<IServiceSchemaClient>();
    // Настраиваем параметры вызова
    var parameters = new Dictionary<string, object>() {
        {"id", 1}, {"name", userName}
    };
    // Получаем результат выполнения
    var serviceResponse = client.Execute(UserConnection, serviceName, methodName, parameters);
} catch (Exception e) {
    // Обрабатываем ошибки
}

Также вам может помочь обсуждение тут.

Показать все комментарии

Создал веб-сервис опроса погоды. В выходных данных есть поля дат. Эти даты надо сконвертировать из int в DateTime.Изображение удалено.

Не могу понять, как обратиться к параметрам веб-сервиса из задания-сценария?

Set("dt", GetDt(Get<int>("WebService1.dt")));
Set("sys_sunrise", GetDt(Get<int>("WebService1.sys_sunrise")));
Set("sys_sunset", GetDt(Get<int>("WebService1.sys_sunset")));
return true;

 

Нравится

5 комментариев

Можно точнее? Что значит из int в DateTime?

public DateTime GetDt(int unixDate)
{
    var dt = new DateTime(1970,1,1,0,0,0,0, DateTimeKind.Utc);
    dt = dt.AddSeconds(unixDate).ToLocalTime();
    return dt;
}

Стандартный метод преобразования unix long в DateTime.

Дамиан, Вы можете создать в БП параметры нужного типа и связать их со входящими параметрами веб-сервиса. Затем из скрипта работать уже с ними, используя Get.

Зверев Александр,

Можете привести код или ссылки?

Дамиан, как работать с параметрами при помощи Get, есть тут.

Я имею в виду, что в дизайнере БП привязать параметр процесса к исходящему параметру веб-сервиса, а затем работать уже с ним.

 

Показать все комментарии

  Всем доброго времени суток! Подскажите, возможно ли использовать анонимный ws в качестве веб-хука, например для Telegram-bot?

Благодарю.

Нравится

3 комментария
Лучший ответ

1. Создаем анонимный сервис.

2. Добавляем в него метод по аналогии с HandleWebHookEvents в MandrillService:

[OperationContract]

        [WebInvoke(Method = "*", UriTemplate = "HandleWebHookEvents")]

        public void HandleWebHookEvents(Stream mandrill_events) {

}

Он принимает stream, и может ничего не возвращать. 



Как читать raw поста можно погуглить либо взять из того же метода пример.

Алексей, по поводу веб-хуков см. в этом обсуждении. Там упоминаются готовые примеры в системе и сторонних дополнениях.

1. Создаем анонимный сервис.

2. Добавляем в него метод по аналогии с HandleWebHookEvents в MandrillService:

[OperationContract]

        [WebInvoke(Method = "*", UriTemplate = "HandleWebHookEvents")]

        public void HandleWebHookEvents(Stream mandrill_events) {

}

Он принимает stream, и может ничего не возвращать. 



Как читать raw поста можно погуглить либо взять из того же метода пример.

Чтобы быстро понять, что приходить в вебхуке и как это парсить, используйте https://webhook.site/.&nbsp;

Показать все комментарии

Думаю не для кого не секрет, что на Windows Server 2008R2 повышенная политика безопасности. Столкнулся с задачей настройки подключения к веб-сервисам из Terrasoft на этой ОС. Соединение не устанавливалось, хотя из других ОС к этим же веб-сервисам коннект проходил нормально.
Перепробовал много различных способов: отключение брандмауэра, отключение UAC, мониторинг запросов в реестр/файловую систему, анализ недостающих библиотек. Но потом нашел интересную статью по этой теме:
http://stackoverflow.com/questions/2485578/incompatibilities-between-indy-9-and-windows-server-2003
Причиной всему оказался включенным системный Data Execution Prevention (DEP). Добавил в список его исключений приложение TSClient.exe и соединения к веб-сервисам стали происходить нормально.
Для русской Windows 2008R2 эта настройка находиться "Компьютер" -> "Свойства" -> "Дополнительные параметры системы" -> закладка "Дополнительно" -> Быстродействие "Параметры" -> закладка "Предотвращение выполнения данных". Выберите "Включить DEP только для основных программ и служб Windows" или добавьте в список исключения необходимые программы (TSClient.exe, TSAdmin.exe ...)

Нравится

Поделиться

2 комментария

Непомогло. Как выходила ошибка так и выходит.

В ходе удаленного соединения оказалось, что соединение с машины Windows Server 2008 происходило нормально, а вот с Windows XP - та же проблема. Добавили Terrasoft в список исключений DEP и все заработало.

Показать все комментарии