Jinget.Handlers.ExternalServiceHandlers
6.2.18-preview016
Prefix Reserved
See the version list below for details.
dotnet add package Jinget.Handlers.ExternalServiceHandlers --version 6.2.18-preview016
NuGet\Install-Package Jinget.Handlers.ExternalServiceHandlers -Version 6.2.18-preview016
<PackageReference Include="Jinget.Handlers.ExternalServiceHandlers" Version="6.2.18-preview016" />
paket add Jinget.Handlers.ExternalServiceHandlers --version 6.2.18-preview016
#r "nuget: Jinget.Handlers.ExternalServiceHandlers, 6.2.18-preview016"
// Install Jinget.Handlers.ExternalServiceHandlers as a Cake Addin #addin nuget:?package=Jinget.Handlers.ExternalServiceHandlers&version=6.2.18-preview016&prerelease // Install Jinget.Handlers.ExternalServiceHandlers as a Cake Tool #tool nuget:?package=Jinget.Handlers.ExternalServiceHandlers&version=6.2.18-preview016&prerelease
Jinget
We are currently in the way to make Jinget an open source project, during this journey we will publish different parts of Jinget
Jinget.Handlers.ExternalServiceHandlers
The purpose of this package is to facilitate communication and use of various types of web services and Web APIs including Rest APIs and SOAP web services.
How to Use:
Download the package from NuGet using Package Manager:
Install-Package Jinget.Handlers.ExternalServiceHandlers
You can also use other methods supported by NuGet. Check Here for more information.Create a class which defines the response model.
public class SampleGetResponse
{
public int id { get; set; }
public string name { get; set; }
public string username { get; set; }
}
- Create an object of type
JingetServiceHandler<>
class and pass the response model as its generic type:
var jingetServiceHandler = new JingetServiceHandler<SampleGetResponse>("https://jsonplaceholder.typicode.com");
- Call your endpoint:
var result = await jingetServiceHandler.GetAsync("users");
How to call SOAP web Services:
- For SOAP services, it would be important to create the request envelope before sending the request. To create the request envelop, You need to create classes for different parts of the request envelop. For example suppose that we need to model the following request envelop:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:Add>
<tem:intA>?</tem:intA>
<tem:intB>?</tem:intB>
</tem:Add>
</soapenv:Body>
</soapenv:Envelope>
In this request envelop we have Envelop
node which contains two inner nodes: Header
and Body
. Also for Body
, this node contains a node node called Add
and finally Add
contains two nodes called intA
and intB
. Also each node belongs to some namespaces which are defined in Envelop
node.
With all these in mind, we need to define classes for exact this hierarchy as follow:
//This is the whole request envelop
public class SampleSOAPRequest : SOAPRequestBase<SampleSOAPRequest.Envelope, SampleSOAPRequest.SampleSOAPGet>
{
//This method creates an envelop with the following structure
public override (Envelope envelope, SampleSOAPGet request) CreateEnvelope()
{
var envelope = new Envelope
{
Header = new EnvelopeHeader(),
Body = new EnvelopeBody()
};
return (envelope, envelope.Body.Add);
}
//request envelop contains the Envelop node with some namespaces
[Serializable, XmlType(Namespace = "http://schemas.xmlsoap.org/soap/envelope/"), XmlRoot(Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class Envelope : SOAPEnvelopeBase
{
//When calling this method, the final envelop is returned as string value
public override string ToString()
{
XmlSerializerNamespaces ns = new();
ns.Add("tem", "http://tempuri.org/");
ns.Add("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
return XmlUtility.SerializeToXml(this, true, ns);
}
//Envelop node contains the Header node
public EnvelopeHeader Header { get; set; }
//Envelop node contains the Body node
public EnvelopeBody Body { get; set; }
}
//The Header node has the following members. As you see it is empty. Also this node belongs to the http://schemas.xmlsoap.org/soap/envelope/ namespace
[Serializable, XmlType(Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class EnvelopeHeader
{
}
//The Body node has the following members. Also this node belongs to the http://schemas.xmlsoap.org/soap/envelope/ namespace
[Serializable, XmlType(Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class EnvelopeBody
{
//Body node contains a node called 'Add' which belongs to the http://schemas.xmlsoap.org/soap/envelope/ namespace
[XmlElement(Namespace = "http://tempuri.org/")]
public SampleSOAPGet Add { get; set; }
}
//The Add node has the following members.
[Serializable]
public class SampleSOAPGet
{
public int intA { get; set; }
public int intB { get; set; }
}
}
- Now that we have our envelop, we can easily call the SOAP web service as following:
var (envelope, request) = new SampleSOAPRequest().CreateEnvelope();
envelope.Body.Add = new SampleSOAPRequest.SampleSOAPGet { intA = 1, intB = 2 };
var jingetServiceHandler = new JingetServiceHandler<ResponseType>("http://www.dneonline.com/calculator.asmx");
var result = await jingetServiceHandler.PostAsync("", envelope.ToString(), true, new Dictionary<string, string>
{
{"Content-Type","text/xml" },
{"SOAPAction","http://tempuri.org/Add" }
});
In line number 2, we have our envelop and all we need to do, is to pass our parameters. In line number 6, the envelop is being send to the PostAsync method as string value. It is important to note the SOAPAction
header.
How to use custom Service Handler
You can use your custom service handler instead of using JingetServiceHandler
. To do this create your custom class and makes it to inherit from ServiceHandler<>
class. Also create a custom class for your event management and pass it as generic argument to ServiceHandler<>
class.
For example suppose that we have a class called CustomHandler
as below:
public class CustomServiceHandler : ServiceHandler<CustomEvents>
{
...
}
How to install
In order to install Jinget please refer to nuget.org
Further Information
Sample codes are available via Unit Test projects which are provided beside the main source codes.
Contact Me
👨💻 Twitter: https://twitter.com/_jinget
📧 Email: farahmandian2011@gmail.com
📣 Instagram: https://www.instagram.com/vahidfarahmandian
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net6.0
- Jinget.Core (>= 6.2.18-preview016)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Jinget.Handlers.ExternalServiceHandlers:
Package | Downloads |
---|---|
Jinget.AzureDevOps.Connector
Using this package, you can easily connect to Azure DevOps and integrate it with your software applications |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
8.0.0-preview007 | 70 | 11/11/2024 |
8.0.0-preview006 | 65 | 11/2/2024 |
8.0.0-preview005 | 57 | 11/2/2024 |
8.0.0-preview004 | 68 | 11/1/2024 |
8.0.0-preview003 | 59 | 11/1/2024 |
8.0.0-preview002 | 61 | 11/1/2024 |
8.0.0-preview001 | 53 | 11/1/2024 |
6.2.23-preview003 | 67 | 10/31/2024 |
6.2.23-preview002 | 62 | 10/31/2024 |
6.2.22 | 82 | 10/26/2024 |
6.2.21 | 74 | 10/26/2024 |
6.2.20 | 73 | 10/26/2024 |
6.2.19-preview037 | 62 | 10/14/2024 |
6.2.19-preview036 | 68 | 9/30/2024 |
6.2.19-preview035 | 93 | 9/10/2024 |
6.2.19-preview034 | 86 | 9/9/2024 |
6.2.19-preview033 | 79 | 9/1/2024 |
6.2.19-preview032 | 77 | 9/1/2024 |
6.2.19-preview031 | 87 | 8/31/2024 |
6.2.19-preview029 | 85 | 8/26/2024 |
6.2.19-preview028 | 97 | 8/26/2024 |
6.2.19-preview027 | 101 | 8/26/2024 |
6.2.19-preview026 | 101 | 8/21/2024 |
6.2.19-preview025 | 108 | 8/21/2024 |
6.2.19-preview024 | 102 | 8/19/2024 |
6.2.19-preview023 | 80 | 8/8/2024 |
6.2.19-preview022 | 85 | 8/8/2024 |
6.2.19-preview021 | 78 | 8/5/2024 |
6.2.19-preview020 | 80 | 8/5/2024 |
6.2.19-preview019 | 79 | 8/5/2024 |
6.2.19-preview018 | 44 | 8/3/2024 |
6.2.19-preview017 | 45 | 7/30/2024 |
6.2.19-preview016 | 56 | 7/29/2024 |
6.2.19-preview015 | 57 | 7/29/2024 |
6.2.19-preview014 | 62 | 7/26/2024 |
6.2.19-preview013 | 84 | 7/20/2024 |
6.2.19-preview012 | 74 | 7/20/2024 |
6.2.19-preview011 | 84 | 6/15/2024 |
6.2.19-preview010 | 79 | 6/14/2024 |
6.2.19-preview009 | 79 | 6/14/2024 |
6.2.19-preview008 | 80 | 6/13/2024 |
6.2.19-preview007 | 71 | 6/13/2024 |
6.2.19-preview006 | 70 | 6/13/2024 |
6.2.19-preview005 | 59 | 6/13/2024 |
6.2.19-preview004 | 71 | 6/13/2024 |
6.2.19-preview003 | 84 | 6/11/2024 |
6.2.19-preview002 | 87 | 6/8/2024 |
6.2.19-preview001 | 84 | 6/8/2024 |
6.2.18 | 108 | 6/6/2024 |
6.2.18-preview020 | 92 | 6/6/2024 |
6.2.18-preview019 | 104 | 6/6/2024 |
6.2.18-preview018 | 102 | 6/6/2024 |
6.2.18-preview017 | 94 | 6/2/2024 |
6.2.18-preview016 | 95 | 6/1/2024 |
6.2.18-preview015 | 101 | 5/28/2024 |
6.2.18-preview014 | 89 | 5/28/2024 |
6.2.18-preview013 | 90 | 5/28/2024 |
6.2.18-preview012 | 88 | 5/28/2024 |
6.2.18-preview011 | 84 | 5/26/2024 |
6.2.18-preview010 | 87 | 5/26/2024 |
6.2.18-preview009 | 88 | 5/26/2024 |
6.2.18-preview008 | 96 | 5/26/2024 |
6.2.18-preview007 | 102 | 5/22/2024 |
6.2.18-preview006 | 95 | 5/22/2024 |
6.2.18-preview005 | 81 | 5/19/2024 |
6.2.18-preview004 | 75 | 5/19/2024 |
6.2.18-preview003 | 72 | 5/19/2024 |
6.2.18-preview002 | 73 | 5/19/2024 |
6.2.17 | 68 | 5/19/2024 |
6.2.16 | 79 | 5/18/2024 |
6.2.15 | 83 | 5/18/2024 |
6.2.14 | 76 | 5/18/2024 |
6.2.13 | 85 | 5/17/2024 |
6.2.12 | 83 | 5/17/2024 |
6.2.11 | 84 | 5/17/2024 |
6.2.10 | 84 | 5/17/2024 |
6.2.9 | 105 | 5/12/2024 |
6.2.8 | 115 | 5/9/2024 |
6.2.7 | 123 | 5/9/2024 |
6.2.6 | 119 | 5/7/2024 |
6.2.5 | 102 | 4/24/2024 |
6.2.4 | 137 | 2/1/2024 |
6.2.3 | 108 | 2/1/2024 |
6.2.2 | 105 | 1/31/2024 |
6.2.1 | 115 | 1/23/2024 |
6.2.0 | 114 | 1/23/2024 |
6.2.0-preview013 | 98 | 1/19/2024 |
6.2.0-preview012 | 103 | 1/19/2024 |
6.2.0-preview011 | 110 | 1/18/2024 |
6.2.0-preview010 | 113 | 1/14/2024 |
6.2.0-preview009 | 117 | 1/11/2024 |
6.2.0-preview008 | 127 | 1/1/2024 |
6.2.0-preview007 | 108 | 1/1/2024 |
6.2.0-preview006 | 115 | 1/1/2024 |
6.2.0-preview005 | 120 | 1/1/2024 |
6.2.0-preview001 | 119 | 12/30/2023 |
6.1.0 | 219 | 12/2/2023 |
6.1.0-preview003 | 143 | 12/2/2023 |
6.1.0-preview002 | 134 | 12/2/2023 |
6.1.0-preview001 | 141 | 12/2/2023 |
6.0.2 | 151 | 11/27/2023 |
6.0.1 | 162 | 11/22/2023 |
6.0.0 | 130 | 11/22/2023 |
3.5.0 | 195 | 10/28/2023 |
3.4.0 | 194 | 10/1/2023 |
3.3.1 | 179 | 9/30/2023 |
3.3.0 | 156 | 9/28/2023 |
3.2.5 | 170 | 9/28/2023 |
3.2.4 | 170 | 9/28/2023 |
3.2.3 | 165 | 9/28/2023 |
3.2.2 | 169 | 9/28/2023 |
3.2.1 | 148 | 9/28/2023 |
3.2.0 | 171 | 9/28/2023 |
3.1.0 | 176 | 9/27/2023 |
3.0.1 | 153 | 9/27/2023 |
3.0.0 | 180 | 9/14/2023 |
3.0.0-preview001 | 157 | 9/14/2023 |
2.3.2 | 192 | 9/12/2023 |
2.3.1 | 233 | 8/20/2023 |
2.3.0 | 221 | 8/20/2023 |
2.2.0 | 199 | 8/12/2023 |
2.1.1 | 238 | 8/5/2023 |
2.1.0 | 213 | 8/5/2023 |
2.0.5 | 193 | 7/20/2023 |
2.0.4 | 200 | 7/15/2023 |
2.0.3 | 631 | 7/1/2023 |
2.0.1 | 206 | 7/1/2023 |
2.0.0 | 237 | 6/29/2023 |