Skip to content

Repository files navigation

Soap

Build StatusCode coverageModule VersionHex DocsTotal DownloadLicenseLast Updated

SOAP client for Elixir programming language.

Installation

Add :soap to your deps:

defdepsdo[{:soap,"~> 1.0"}]end

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

defapplicationdo[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>{:ok,wsdl}=Soap.init_model(wsdl_path,:url){:ok,parsed_wsdl}

Get list of available operations:

iex>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>{: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>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.

Copyright and License

Copyright (c) 2017 Petr Stepchenko

This work is free. You can redistribute it and/or modify it under the terms of the MIT License. See the LICENSE.md file for more details.

About

SOAP client for Elixir programming language

Topics

Resources

Stars

140 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages