Добрый день.

Версия 7.7.0.

Задача: Добавить кнопку в панель действия, по нажатию на которую отправляется SOAP запрос со страницы во внешнюю систему.

Кнопку в панель добавил, а с реализацией web-сервисов еще не знаком.

Где про это можно максимально подробно почитать?

Интересуют все этапы.

Нравится

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

Добрый день!

Надо сделать конфигурационный сервис (смотреть тут), либо бизнес процесс с элементом скриптом, который уже будет запрос со страницы во внешнюю систему. Как сделать запрос во внешнюю систему можно посмотреть тут

Добрый день!

Надо сделать конфигурационный сервис (смотреть тут), либо бизнес процесс с элементом скриптом, который уже будет запрос со страницы во внешнюю систему. Как сделать запрос во внешнюю систему можно посмотреть тут

Сидоров Александр В.,



Добрый день.

Описал сервис:

[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, BodyStyle =
		WebMessageBodyStyle.Wrapped,
		ResponseFormat = WebMessageFormat.Json)]
		public string SoapRequest(string Name)
		{
			string _soapEnvelope = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:bp=\"http://********.ru\">" +
				"<soapenv:Header/>" +
					"<soapenv:Body>" +
						"<bp:CL_Integracija_CRM_Request>" +
							"<client>" +
								"<inn>7811496640</inn>" +
								"<kpp>781101001</kpp>" +
								"<id_abs>19505031632</id_abs>" +
							"</client>" +
							"<loan_app>" +
								"<product_code>вкл</product_code>" +
								"<summ>10000000</summ>" +
								"<term>24</term>" +
								"<rate>9</rate>" +
							"</loan_app>" +
							"<user_in>" +
								"<login>" + Name + "</login>" +
							"</user_in>" +
						"</bp:CL_Integracija_CRM_Request>" +
					"</soapenv:Body>" +
				"</soapenv:Envelope>"; 
			var request = (HttpWebRequest)WebRequest.Create("http://*******************/bp");
			request.Method = "POST";
			byte[] byteArray = Encoding.UTF8.GetBytes(_soapEnvelope);
			request.ContentType = "application/x-www-form-urlencoded";
			request.ContentLength = byteArray.Length;
			request.Timeout = 30 * 1000;
			using (var dataStream = request.GetRequestStream())
			{
				dataStream.Write(byteArray, 0, byteArray.Length);
				dataStream.Close();
			}
			var resp = (HttpWebResponse)request.GetResponse();
			Stream responseStream = resp.GetResponseStream();
			StreamReader sr = new StreamReader(responseStream);
            string s = sr.ReadToEnd();
            return s;
		}

Вызываю его из замещающего клиентского модуля: 

ServiceHelper.callService("UsrCustomConfigurationService", "SoapRequest", function(response) {
						//MaskHelper.HideBodyMask();
						if (response.ProcessRequestResult.ErrorMessage) {
							Terrasoft.utils.showInformation(response.ProcessRequestResult.ErrorMessage);
						} else if (!response.ProcessRequestResult.IsEmpty) {
							Terrasoft.utils.showInformation("Запрос успешно обработан. Файлы отчета прикреплены к заявке.");
						} else {
							Terrasoft.utils.showInformation("Запрос успешно обработан. По выбранному контакту данных нет.");
						}
						window.console.log(response.ProcedureSqlResult);
					}, serviceData, this);

но получаю ошибку: 

В web.config и services.config все прописал, в ServiceModel описание добавил

С чем это может быть связано?

stique,

Убедитесь, что добавлены атрибуты [ServiceContract] у класса и [OperationContract] у метода

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