ErpClient Class
Provides a class to connect with ERP services.
Namespace: powerGate.Erp.Client
Assembly: powerGate.Erp.Client.dll
Inheritance Hierarchy
System.Object
powerGate.Erp.Client.ErpClient
Syntax
1 | public class ErpClient : IErpClient |
The ErpClient type exposes the following members.
Constructors
Name |
Description |
---|---|
|
Initializes a new instance of the ErpClient class. |
Properties
Type |
Name |
Description |
---|---|---|
Services |
Gets the list of connected services. |
Methods
Type |
Name |
Description |
---|---|---|
ConnectErp(ConnectionSettings connectionSettings) |
Creates a connection to a service using the specified ConnectionSettings. |
|
|
Dispose() |
Disconnects from all services and releases all resources used by the ErpClient. |
Extension Methods
Type |
Name |
Description |
---|---|---|
ConnectErp(Uri service, ICredentials credentials = null, bool ignoreCertificates = false, Action<ErpClientSettings> onConnect = null) |
Overloaded. Creates a connection to a service using the specified parameter values. |
Remarks
The ConnectErp(..) function is able to either connect to a CatalogService or directly to a Service.
When calling the function passing settings having an url to a CatalogService, the client automatically connects to all the registered services with the same authentication as used for the login to the CatalogService.
The function can be recalled for a single service with different authentication if that service is not available by using the authentication of the CatalogService.
Examples
In the following examples we are using the public OData Services (http://services.odata.org) for demonstration purposes:
Connect to the NorthwindService
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | using System; using powerGate.Erp.Client; namespace HelloWorldServices { class Program { static void Main(string[] args) { //Create Instance of client using (var erpclient = new ErpClient()) { //Connect to the service using (var service = erpclient.ConnectErp(new Uri("http://services.odata.org/V4/Northwind/Northwind.svc"))) Console.Write("Connected to service: {0}", service.Name); } } } } |
Connect to a service via secured SSL connection and trust all certificates
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | using System; using powerGate.Erp.Client; namespace HelloWorldServices { class Program { static void Main(string[] args) { var erpclient = new ErpClient(); var service = erpclient.ConnectErp(new Uri("https://services.odata.org/V4/Northwind/Northwind.svc"), ignoreCertificates: true); //Dispose Service and Client service.Dispose(); erpclient.Dispose(); } } } |
Connect to a SAP service that requires authentication
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | using System; using System.Net; using powerGate.Erp.Client; namespace HelloWorldServices { class Program { static void Main(string[] args) { using(var erpclient = new ErpClient()) { //Create special ConnectionSettings for connecting to the SAP service var connectionSettings = new ConnectionSettings { Service = new Uri("http://sap.coolorange.com"), Credentials = new NetworkCredential("EX_DEMO", "secret"), OnConnect = new SapConnect() }; using(var service = erpclient.ConnectErp(connectionSettings)) Console.Write("Connected to service: {0}", service.Name); } } } } |
Accessing the last server response
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | using System; using System.Net.Http; //assembly has to be referenced using powerGate.Erp.Client; namespace HelloWorldServices { class Program { static void Main(string[] args) { var onConnect = new Action<ErpClientSettings>(settings => { settings.AfterResponse = (response => { if (response.IsSuccessStatusCode) return; Console.WriteLine("Request Url: " + response.RequestMessage.RequestUri); Console.WriteLine("Status Code: " + response.StatusCode); Console.WriteLine("Body: " + response.Content.ReadAsStringAsync().Result); }) + settings.AfterResponse; }); using (var erpclient = new ErpClient()) try { erpclient.ConnectErp(new Uri("https://www.coolorange.com"), onConnect: onConnect); } catch (Exception e) { } } } } /* Console Output Request Url: https://www.coolorange.com/$metadata Status Code: NotFound Body: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL /$metadata was not found on this server.</p> <hr> <address>Apache Server at www.coolorange.com Port 443</address> </body></html> */ |
Error handling, analyze why entity could not be updated
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | using System; using System.Collections.Generic; using powerGate.Erp.Client; namespace HelloWorldServices { class Program { static void Main(string[] args) { using (var erpclient = new ErpClient()) { try { using (var service = erpclient.ConnectErp(new Uri("http://services.odata.org/V4/Northwind/Northwind.svc"))) { var employees = service.EntitySets["Employees"]; employees.UpdatErpObject(new Dictionary<string, object>{{"EmployeeID", 66}}, new Dictionary<string, object> { { "FirstName", "Franz" }, { "LastName", "VomBerg" } }); } } catch (WebRequestException e) { Console.WriteLine("Message: " + e.Message); Console.WriteLine("Status Code: " + e.StatusCode); Console.WriteLine("Body: " + e.RawResponse); } } } } } /* Console Message: Not Implemented Status Code: 501 Body: {"error":{"code":"","message":"Not Implemented"}} */ |
See also
Reference