Вызов стороннего вэб-сервиса из задания-сценария

Добрый день, коллеги!

Есть задача по интеграции сайта со сторонним приложением. На стороне реализовано api с рядом запросов. Но реализация сторонних запросов такова, что мне приходится в бизнес процессе вызывать запросы в цикле. Может кто-то подскажет вариант вызова вэб-сервиса в тексте задания-сценария БП?

Нравится

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

Ольга, можно либо самостоятельно реализовать логику вызова сервиса кодом (пример есть тут), либо настроить нужный веб-сервис в разделе обычным образом, а затем взять код запуска в схеме 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;

 

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