Hi community,
We have this situation where we need to create a bi-directional connection with our customer platform, using SOAP protocol. We would like to know if its possible to create a SOAP based services in Creatio to be accessed by our customer? If yes, any information on how to implement this?
Thanks in Advance.
Best Regards,
Pedro Pinheiro
Hello Pedro,
You need to develop a configuration service (either regular or anonymous) using SOAP. Here is the article that describes how to configure web-services and integrate them into the Creatio app.
For example:
1) Create a source code for the service contract SPMSUBPServiceContract:
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; namespace SPMSUBPService { [ServiceContract] public interface IService { [OperationContract] SPMClientInfoResponse SPMClientInfo(string Login); } [DataContract] public class SPMClientInfoResponse { bool success = true; string errorText = ""; [DataMember] public bool Success { get { return success; } set { success = value; } } [DataMember] public string ErrorText { get { return errorText; } set { errorText = value; } } } }
and the source code of the SPMSUBPService service directly:
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; namespace SPMSUBPService { public class SPMSUBPService : IService { public SPMClientInfoResponse SPMClientInfo(string Login) { return new SPMClientInfoResponse(); } } }
2) Create a file with SPMSUBPService.svc name in the Terrasoft.WebApp\ServiceModel folder with the following text:
<%@ ServiceHost Language="C#" Debug="true" Service="SPMSUBPService.SPMSUBPService" Factory="System.ServiceModel.Activation.ServiceHostFactory" %>
3) Add the description of the service to the Terrasoft.WebApp\ServiceModel\http\services.config file:
<services> ... <service behaviorConfiguration="BaseServiceBehavior" name="SPMSUBPService.SPMSUBPService"> <endpoint name="SPMSUBPServiceEndPoint" binding="webHttpBinding" behaviorConfiguration="RestServiceBehavior" bindingNamespace="http://Terrasoft.WebApp.ServiceModel" contract="SPMSUBPService.IService" /> <endpoint address="soap" binding="basicHttpBinding" contract="SPMSUBPService.IService"/> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> ... </services>
4) Modify the Terrasoft.WebApp\Web.config file:
... <location path="ServiceModel/SPMSUBPService.svc"> <system.web> <authorization> <allow users="*" /> </authorization> </system.web> </location> ...
And everything is ready, the service is accessible via /0/ServiceModel/SPMSUBPService.svc and the WSDL as well /0/ServiceModel/SPMSUBPService.svc?singleWsdl
Best regards,
Oscar
Oscar Dylan,
Thank you for your response.
I've tried to implement the solution you provided above and I'm getting this error when sending a request through both Postman and SoapUI.
Can you please tell me what this error means and how can I fix it?
Thanks in Advance.
Best Regards,
Pedro Pinheiro