Search code examples
ruby-on-railsrubysoapsavonwash-out

rails pass soap basic auth with savon


I'm trying to send soap request with basic authentication with savon gem
My soap server is set up with wash_out gem

class OrdersController < ApplicationController  
     soap_service namespace: 'sir:WashOut', wsse_username: SIRA[:auth][:username], wsse_password: SIRA[:auth][:password]  

....

When i make a request to soap server via savon i get an error:

    @client = Savon.client(
      wsdl:  "http://localhost:3000/orders/wsdl",
      soap_header: { 'Username' =>SIRA[:auth][:username], 'Password' => SIRA[:auth][:password] }
    )  

  @response = @client.call(:notify ).to_hash

On the last command i get an error

 Savon::SOAPFault: (Server) Missing required UsernameToken

Solution

  • I've tried this and it works!

    @client = Savon.client(
      wsdl:  "http://localhost:3000/orders/wsdl",
      wsse_auth: [SIRENA[:auth][:username], SIRENA[:auth][:password] ],
      logger: Rails.logger
    )
    
     @response = @client.call(:notify,  ).to_hash