Ruby SOAP Bug?

I’ve spent a few days now looking on how to access a wsdl over ssl.
I’m using Ruby 1.8.6 and SOAP4R 1.5.8
In short, I need to connect to a wsdl file and also need to do the basic
authentication before SOAP::WSDLDriverFactory.new call.
So I created a soap/property file and put the correct information in
there.
I followed this link for a simple ruby program:
http://dev.ctor.org/soap4r/wiki/AccessingBasicAuthProtectedWsdl

After I set everything up, I started seeing weird errors.
So I debugged an debugged and finally I saw something funky with the
httpconfigloader.rb’s set_basic_auth method.
So I googled to see if it’s a bug or not and came upon this blog:
http://cubiclecoder.blogspot.com/2005/10/of-aggregators-laptops-ruby-and-soap.html

He talks about the same problem I am having with set_basic_auth.
But noone else seems to have this problem.

So what do I do in this case?
Do I submit this as a bug to Ruby guys?
Is this indeed a bug?

I would appreciate any responses.

Greg L. wrote:

I would appreciate any responses.

I wrote a blog post a few days ago about how to do this:
http://s2.diffuse.it/blog/show/62_Consume+SSL+protected+Web+Services+with+soap4r
maybe it is of some use to you.

I actually have looked at your blog as well when developing/debugging.
My coding strategy is pretty much the same as yours.
I’m using
client.protocol.http.ssl_config.verify_mode=OpenSSL::SSL::VERIFY_NONE
option instead of messing with the certificates.

However my problem is that the set_basic_auth function does not treat
the entries in the soap/property file correctly. Basically what happens
is client.set_basic_auth gets called three times with these values:
First time: url, nil, nil
Second time: nil, userid, nil
Third time: nil, nil, password

I find it strange that not more people are seeing this problem.
And since your code is working, I confused why mine is not.
What are your ruby and soap4r versions?

Greg L. wrote:

I actually have looked at your blog as well when developing/debugging.

cool :slight_smile: at least i did not write that post only for me alone :slight_smile:

However my problem is that the set_basic_auth function does not treat
the entries in the soap/property file correctly. Basically what happens
is client.set_basic_auth gets called three times with these values:
First time: url, nil, nil
Second time: nil, userid, nil
Third time: nil, nil, password

i don’t know. this did not happen to me, so i can’t help you. sorry.

I find it strange that not more people are seeing this problem.
And since your code is working, I confused why mine is not.
What are your ruby and soap4r versions?

ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
soap4r (1.5.8)

OK, I was able to solve this by using the soap4r gem. All I did was
added:

gem ‘soap4r’

line to the top of my code.

Greg L. wrote:

OK, I was able to solve this by using the soap4r gem. All I did was
added:

gem ‘soap4r’

line to the top of my code.

Great. Thanks for sharing.

So I think I might have figured out what the problem is.

I looked at the soap4r’s httpconfigloader.rb and it handles
set_basic_auth different then ruby’s soap/httpconfigloader.rb. I’m
guessing the “bug” is really only in the ruby’s version.
I have the soap4r gem installed but I am not using it for some reason.
What is the difference between the ruby’s soap and soap4r? They seem
quite similar.
Am I suppose to require something to use the soap4r’s version of the
code?

Here’s my simple app, by the way:

require ‘soap/wsdlDriver’
wsdl = ‘https://server/path/to/file.wsdl
soap = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver

And here’s the soap/property file:

client.protocol.http.basic_auth.1.url = https://server/path/to/file.wsdl
client.protocol.http.basic_auth.1.userid = username
client.protocol.http.basic_auth.1.password = password

client.protocol.http.ssl_config.verify_mode=OpenSSL::SSL::VERIFY_NONE

S2 wrote:

Greg L. wrote:

OK, I was able to solve this by using the soap4r gem. All I did was
added:

gem ‘soap4r’

line to the top of my code.

Great. Thanks for sharing.

I apologize in advance for a dumb question, but in a Rails 2.3.x
environment. Where should the property file go?

And, when you say: soap/property
Is it supposed to be a file called “property” in a directory called
“soap” under “lib” ? e.g. PROJECT_ROOT/lib/soap/property ?

Galen Palmer wrote in post #942421:

And, when you say: soap/property
Is it supposed to be a file called “property” in a directory called
“soap” under “lib” ? e.g. PROJECT_ROOT/lib/soap/property ?

…just in case anyone else comes across this question:
Yes, a file called “property” in a directory called “soap” somewhere in
the ruby path or in your appplication’s directory.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs