Вопрос
Вызов стороннего вэб-сервиса из задания-сценария
21 апреля 2020 09:19
Добрый день, коллеги!
Есть задача по интеграции сайта со сторонним приложением. На стороне реализовано api с рядом запросов. Но реализация сторонних запросов такова, что мне приходится в бизнес процессе вызывать запросы в цикле. Может кто-то подскажет вариант вызова вэб-сервиса в тексте задания-сценария БП?
Нравится
1 комментарий
23 апреля 2020 01:16
Ольга, можно либо самостоятельно реализовать логику вызова сервиса кодом (пример есть тут), либо настроить нужный веб-сервис в разделе обычным образом, а затем взять код запуска в схеме WebServiceUserTask и скопировать его в функцию в разрабатываемом БП вместе со всеми вспомогательными функциями и параметрами, которую затем запускайте в своём скрипте в цикле. Вот основная логика оттуда:
if (ServiceUrl == Guid.Empty || string.IsNullOrEmpty(ServiceMethod)) { return true; } string serviceUrl = (new Select(UserConnection) .Column("URL") .From("WebServiceURL") .Where("Id").IsEqual(new QueryParameter("Id", ServiceUrl)) as Select) .ExecuteScalar<string>(); HttpWebRequest webRequest = CreateWebRequest(serviceUrl, ServiceMethod); string Request = @"<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope"" xmlns:web=""http://www.webserviceX.NET/""> <soap:Header/> <soap:Body>"; Request += RequestBodyInternal; Request += @" </soap:Body> </soap:Envelope>"; webRequest.ContentLength = Request.Length; using (Stream stream = webRequest.GetRequestStream()) { using (StreamWriter streamWriter = new StreamWriter(stream)) { streamWriter.Write(Request); streamWriter.Close(); } } using (WebResponse response = webRequest.GetResponse()) { using (StreamReader rd = new StreamReader(response.GetResponseStream())) { Responce = rd.ReadToEnd(); } } PrepareResponceResult(); if (!IsLoggingRequestAndResponce) { Request = string.Empty; Responce = string.Empty; } return true;
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать