What's the best way to use SOAP with Ruby?

后端 未结 10 1538
别那么骄傲
别那么骄傲 2020-11-27 10:15

A client of mine has asked me to integrate a 3rd party API into their Rails app. The only problem is that the API uses SOAP. Ruby has basically dropped SOAP in favor of RE

10条回答
  •  悲哀的现实
    2020-11-27 11:01

    I have used HTTP call like below to call a SOAP method,

    require 'net/http'
    
    class MyHelper
      def initialize(server, port, username, password)
        @server = server
        @port = port
        @username = username
        @password = password
    
        puts "Initialised My Helper using #{@server}:#{@port} username=#{@username}"
      end
    
    
    
      def post_job(job_name)
    
        puts "Posting job #{job_name} to update order service"
    
        job_xml ="
        
        
           
              ITE2
              topo
              #{job_name}
           
        
     "
    
        @http = Net::HTTP.new(@server, @port)
        puts "server: " + @server  + "port  : " + @port
        request = Net::HTTP::Post.new(('/XISOAPAdapter/MessageServlet?/Test/CreateUpdateOrders/1.0'), initheader = {'Content-Type' => 'text/xml'})
        request.basic_auth(@username, @password)
        request.body = job_xml
        response = @http.request(request)
    
        puts "request was made to server " + @server
    
        validate_response(response, "post_job_to_pega_updateorder job", '200')
    
      end
    
    
    
      private 
    
      def validate_response(response, operation, required_code)
        if response.code != required_code
          raise "#{operation} operation failed. Response was [#{response.inspect} #{response.to_hash.inspect} #{response.body}]"
        end
      end
    end
    
    /*
    test = MyHelper.new("mysvr.test.test.com","8102","myusername","mypassword")
    test.post_job("test_201601281419")
    */
    

    Hope it helps. Cheers.

提交回复
热议问题