Вопрос

Отправка SOAP запроса.

Добрый день.
Версия 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] у метода

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