Popularity
7.6
Stable
Activity
3.4
-
129
6
70

Programming language: Elixir
License: MIT License
Tags: REST And API    
Latest version: v1.0.1

SOAP client alternatives and similar packages

Based on the "REST and API" category.
Alternatively, view soap alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of SOAP client or a related project?

Add another 'REST and API' Package

README

Soap

Build Status Code coverage Hex version Hex license Hex downloads

SOAP client for Elixir programming language

Installation

1) Add soap to your deps:

def deps do
  [{:soap, "~> 1.0"}]
end

2) Add soap to the list of application dependencies(or just use extra_applications):

def application do
  [applications: [:logger, :soap]]
end

Configuration

Configure version of SOAP protocol. Supported versions 1.1(default) and 1.2.

config :soap, :globals, version: "1.1"

Usage

The documentation is available on HexDocs.

Parse WSDL file for execution of actions on its basis:

iex(1)> {:ok, wsdl} = Soap.init_model(wsdl_path, :url)
{:ok, parsed_wsdl}

Get list of available operations:

iex(2)> Soap.operations(wsdl)
[
  %{
    input: %{body: nil, header: nil},
    name: "Add",
    soap_action: "http://tempuri.org/Add"
  },
  %{
    input: %{body: nil, header: nil},
    name: "Subtract",
    soap_action: "http://tempuri.org/Subtract"
  },
  %{
    input: %{body: nil, header: nil},
    name: "Multiply",
    soap_action: "http://tempuri.org/Multiply"
  },
  %{
    input: %{body: nil, header: nil},
    name: "Divide",
    soap_action: "http://tempuri.org/Divide"
  }
]

Call action:

wsdl_path = "http://www.dneonline.com/calculator.asmx?WSDL"
action = "Add"
params = %{intA: 1, intB: 2}

iex(3)> {:ok, response} = Soap.call(wsdl, action, params)
{:ok,
 %Soap.Response{
   body: "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><soap:Body><AddResponse xmlns=\"http://tempuri.org/\"><AddResult>3</AddResult></AddResponse></soap:Body></soap:Envelope>",
   headers: [
     {"Cache-Control", "private, max-age=0"},
     {"Content-Length", "325"},
     {"Content-Type", "text/xml; charset=utf-8"},
     {"Server", "Microsoft-IIS/7.5"},
     {"X-AspNet-Version", "2.0.50727"},
     {"X-Powered-By", "ASP.NET"},
     {"Date", "Thu, 14 Feb 2019 07:52:04 GMT"}
   ],
   request_url: "http://www.dneonline.com/calculator.asmx",
   status_code: 200
 }}

Parse response:

iex(4)> Soap.Response.parse(response)
%{AddResponse: %{AddResult: "3"}}

To add SOAP headers, pass in a {headers, params} tuple instead of just params:

{:ok, %Soap.Response{}} = Soap.call(wsdl, action, {%{Token: "foo"}, params})

Contributing

We appreciate any contribution and open to future requests.

You can find a list of features and bugs in the issue tracker.

License

Soap is released under the MIT license, see the LICENSE file.


*Note that all licence references and agreements mentioned in the SOAP client README section above are relevant to that project's source code only.