Jinget.Handlers.ExternalServiceHandlers 8.0.54

Prefix Reserved
dotnet add package Jinget.Handlers.ExternalServiceHandlers --version 8.0.54
                    
NuGet\Install-Package Jinget.Handlers.ExternalServiceHandlers -Version 8.0.54
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Jinget.Handlers.ExternalServiceHandlers" Version="8.0.54" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Jinget.Handlers.ExternalServiceHandlers" Version="8.0.54" />
                    
Directory.Packages.props
<PackageReference Include="Jinget.Handlers.ExternalServiceHandlers" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Jinget.Handlers.ExternalServiceHandlers --version 8.0.54
                    
#r "nuget: Jinget.Handlers.ExternalServiceHandlers, 8.0.54"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Jinget.Handlers.ExternalServiceHandlers@8.0.54
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Jinget.Handlers.ExternalServiceHandlers&version=8.0.54
                    
Install as a Cake Addin
#tool nuget:?package=Jinget.Handlers.ExternalServiceHandlers&version=8.0.54
                    
Install as a Cake Tool

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:

  1. 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. Then register th DI configuration like this:
builder.Services.AddJingetExternalServiceHandler("jinget-client", true);

You can replace jinget-client with your desired client name. if not specified then by default jinget-client will be used as client name.

  1. 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; }
    }
  1. Create an object of type JingetServiceHandler<> class and pass the response model as its generic type, or Create an object of type JingetServiceHandler class:
var jingetServiceHandler = new JingetServiceHandler<SampleGetResponse>(serviceProvider, "https://jsonplaceholder.typicode.com");
  1. Call your endpoint:
var result = await jingetServiceHandler.GetAsync("users");

How to call SOAP web Services:

  1. 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; }
    }
}
  1. 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<> or ServiceHandler class. Also create a custom class for your event management and pass it as generic argument to ServiceHandler<> class. You can also make use of ServiceHandler(non generic class) too. Different between these two class is that ServiceHandler does not provide any event for response deserialization. it returns the raw response and deserialization is up to you. For example suppose that we have a class called CustomHandler as below:

    public class CustomServiceHandler : ServiceHandler<CustomEvents>
    {
        ...
    }

or

    public class CustomServiceHandler(string baseUri, bool ignoreSslErrors = false) : JingetServiceHandler(baseUri, ignoreSslErrors)
    {
        ...
    }

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 Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.54 191 11/22/2025
8.0.53 184 11/3/2025
8.0.52 184 10/13/2025
8.0.51 187 9/24/2025
8.0.50 193 9/11/2025
8.0.49 183 9/8/2025
8.0.48 186 9/8/2025
8.0.47 179 9/7/2025
8.0.46 123 8/22/2025
8.0.45 180 7/31/2025
8.0.44 141 7/31/2025
8.0.43 138 7/30/2025
8.0.42 139 7/30/2025
8.0.41 128 7/30/2025
8.0.40 129 7/30/2025
8.0.39 140 7/29/2025
8.0.38 154 7/28/2025
8.0.37 166 7/28/2025
8.0.36 177 7/28/2025
8.0.36-preview005 173 7/27/2025
8.0.35 118 7/19/2025
8.0.34 116 7/18/2025
8.0.33 198 6/29/2025
8.0.32 195 6/29/2025
8.0.31 142 6/28/2025
8.0.30 107 6/27/2025
8.0.29 114 6/27/2025
8.0.28 117 6/27/2025
8.0.27 132 6/27/2025
8.0.26 176 6/21/2025
8.0.25 218 6/15/2025
8.0.25-preview001 176 6/15/2025
8.0.24 165 5/31/2025
8.0.23 183 5/28/2025
8.0.23-preview001 166 5/28/2025
8.0.22 200 5/25/2025
8.0.21 198 5/11/2025
8.0.20 184 5/11/2025
8.0.19 189 5/11/2025
8.0.18 219 4/21/2025
8.0.17 215 4/21/2025
8.0.16 144 4/19/2025
8.0.15 262 4/13/2025
8.0.14 225 4/7/2025
8.0.13 223 4/7/2025
8.0.12 160 4/5/2025
8.0.11 264 3/9/2025
8.0.10 230 3/9/2025
8.0.9 236 3/9/2025
8.0.8 204 2/27/2025
8.0.7 168 2/27/2025
8.0.6 166 2/27/2025
8.0.5 164 2/26/2025
8.0.4 156 2/25/2025
8.0.3 163 2/24/2025
8.0.2 158 2/24/2025
8.0.1 164 2/20/2025
8.0.0 170 1/22/2025
8.0.0-preview013 121 12/19/2024
8.0.0-preview012 137 12/19/2024
8.0.0-preview011 134 12/17/2024
8.0.0-preview010 134 12/16/2024
8.0.0-preview009 136 12/15/2024
8.0.0-preview008 125 11/25/2024
8.0.0-preview007 148 11/11/2024
8.0.0-preview006 137 11/2/2024
8.0.0-preview005 114 11/2/2024
8.0.0-preview004 140 11/1/2024
8.0.0-preview003 134 11/1/2024
8.0.0-preview002 119 11/1/2024
8.0.0-preview001 127 11/1/2024
6.2.23-preview003 124 10/31/2024
6.2.23-preview002 129 10/31/2024
6.2.22 171 10/26/2024
6.2.21 165 10/26/2024
6.2.20 164 10/26/2024
6.2.19-preview037 137 10/14/2024
6.2.19-preview036 131 9/30/2024
6.2.19-preview035 156 9/10/2024
6.2.19-preview034 137 9/9/2024
6.2.19-preview033 144 9/1/2024
6.2.19-preview032 144 9/1/2024
6.2.19-preview031 136 8/31/2024
6.2.19-preview029 150 8/26/2024
6.2.19-preview028 158 8/26/2024
6.2.19-preview027 165 8/26/2024
6.2.19-preview026 168 8/21/2024
6.2.19-preview025 155 8/21/2024
6.2.19-preview024 163 8/19/2024
6.2.19-preview023 147 8/8/2024
6.2.19-preview022 143 8/8/2024
6.2.19-preview021 141 8/5/2024
6.2.19-preview020 155 8/5/2024
6.2.19-preview019 137 8/5/2024
6.2.19-preview018 106 8/3/2024
6.2.19-preview017 104 7/30/2024
6.2.19-preview016 118 7/29/2024
6.2.19-preview015 110 7/29/2024
6.2.19-preview014 126 7/26/2024
6.2.19-preview013 152 7/20/2024
6.2.19-preview012 134 7/20/2024
6.2.19-preview011 132 6/15/2024
6.2.19-preview010 140 6/14/2024
6.2.19-preview009 136 6/14/2024
6.2.19-preview008 143 6/13/2024
6.2.19-preview007 128 6/13/2024
6.2.19-preview006 136 6/13/2024
6.2.19-preview005 122 6/13/2024
6.2.19-preview004 120 6/13/2024
6.2.19-preview003 144 6/11/2024
6.2.19-preview002 152 6/8/2024
6.2.19-preview001 142 6/8/2024
6.2.18 196 6/6/2024
6.2.18-preview020 153 6/6/2024
6.2.18-preview019 160 6/6/2024
6.2.18-preview018 183 6/6/2024
6.2.18-preview017 157 6/2/2024
6.2.18-preview016 155 6/1/2024
6.2.18-preview015 163 5/28/2024
6.2.18-preview014 153 5/28/2024
6.2.18-preview013 157 5/28/2024
6.2.18-preview012 150 5/28/2024
6.2.18-preview011 135 5/26/2024
6.2.18-preview010 152 5/26/2024
6.2.18-preview009 149 5/26/2024
6.2.18-preview008 149 5/26/2024
6.2.18-preview007 147 5/22/2024
6.2.18-preview006 162 5/22/2024
6.2.18-preview005 133 5/19/2024
6.2.18-preview004 122 5/19/2024
6.2.18-preview003 129 5/19/2024
6.2.18-preview002 131 5/19/2024
6.2.17 143 5/19/2024
6.2.16 158 5/18/2024
6.2.15 165 5/18/2024
6.2.14 162 5/18/2024
6.2.13 172 5/17/2024
6.2.12 157 5/17/2024
6.2.11 170 5/17/2024
6.2.10 175 5/17/2024
6.2.9 191 5/12/2024
6.2.8 194 5/9/2024
6.2.7 200 5/9/2024
6.2.6 202 5/7/2024
6.2.5 180 4/24/2024
6.2.4 202 2/1/2024
6.2.3 190 2/1/2024
6.2.2 186 1/31/2024
6.2.1 195 1/23/2024
6.2.0 199 1/23/2024
6.2.0-preview013 146 1/19/2024
6.2.0-preview012 163 1/19/2024
6.2.0-preview011 166 1/18/2024
6.2.0-preview010 165 1/14/2024
6.2.0-preview009 181 1/11/2024
6.2.0-preview008 182 1/1/2024
6.2.0-preview007 166 1/1/2024
6.2.0-preview006 174 1/1/2024
6.2.0-preview005 182 1/1/2024
6.2.0-preview001 177 12/30/2023
6.1.0 286 12/2/2023
6.1.0-preview003 195 12/2/2023
6.1.0-preview002 193 12/2/2023
6.1.0-preview001 197 12/2/2023
6.0.2 211 11/27/2023
6.0.1 223 11/22/2023
6.0.0 193 11/22/2023
3.5.0 258 10/28/2023
3.4.0 264 10/1/2023
3.3.1 247 9/30/2023
3.3.0 224 9/28/2023
3.2.5 235 9/28/2023
3.2.4 241 9/28/2023
3.2.3 229 9/28/2023
3.2.2 237 9/28/2023
3.2.1 214 9/28/2023
3.2.0 237 9/28/2023
3.1.0 242 9/27/2023
3.0.1 221 9/27/2023
3.0.0 246 9/14/2023
3.0.0-preview001 223 9/14/2023
2.3.2 263 9/12/2023
2.3.1 325 8/20/2023
2.3.0 304 8/20/2023
2.2.0 286 8/12/2023
2.1.1 325 8/5/2023
2.1.0 302 8/5/2023
2.0.5 282 7/20/2023
2.0.4 295 7/15/2023
2.0.3 753 7/1/2023
2.0.1 302 7/1/2023
2.0.0 333 6/29/2023