Web service client help needed

D

dima

I still can do this web service right so I ask for some help please.
I got the wsdl and make a client with wsdl2ruby.rb. When I run ruby -d
client I got the following output:

= Request

! CONNECT TO XXX.XXX.XXX.XXX:80
! CONNECTION ESTABLISHED
POST /DataFeed/DataFeed.asmx HTTP/1.1
SOAPAction: "http://tempuri.org/ReturnLastPriceList"
Content-Type: text/xml; charset=utf-8
User-Agent: SOAP4R/1.5.5 (http-access2.rb/1.1.1.1, ruby 1.8.5
(2006-12-25) [i386
-mswin32])
Date: Mon Feb 19 20:41:00 +0100 2007
Content-Length: 339
Host: XXX.XXX.XXX.XXX

<?xml version="1.0" encoding="utf-8" ?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Body>
<ReturnLastPriceList xmlns="http://tempuri.org/">ZVDPR</
ReturnLastPriceList>

</env:Body>
</env:Envelope>

= Response

HTTP/1.1 401 Access Denied
Server: Microsoft-IIS/5.0
Date: Mon, 19 Feb 2007 19:40:40 GMT
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
Connection: close
Content-Length: 4431
Content-Type: text/html

.......

I have this web service client in C# but I would like to make it on
ruby. I ask you for some help, example or a hint.
Thanks in advance.

dima
 
J

Jan Svitok

I still can do this web service right so I ask for some help please.
I got the wsdl and make a client with wsdl2ruby.rb. When I run ruby -d
client I got the following output:

= Request

! CONNECT TO XXX.XXX.XXX.XXX:80
! CONNECTION ESTABLISHED
POST /DataFeed/DataFeed.asmx HTTP/1.1
SOAPAction: "http://tempuri.org/ReturnLastPriceList"
Content-Type: text/xml; charset=utf-8
User-Agent: SOAP4R/1.5.5 (http-access2.rb/1.1.1.1, ruby 1.8.5
(2006-12-25) [i386
-mswin32])
Date: Mon Feb 19 20:41:00 +0100 2007
Content-Length: 339
Host: XXX.XXX.XXX.XXX

<?xml version="1.0" encoding="utf-8" ?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<env:Body>
<ReturnLastPriceList xmlns="http://tempuri.org/">ZVDPR</
ReturnLastPriceList>

</env:Body>
</env:Envelope>

= Response

HTTP/1.1 401 Access Denied
Server: Microsoft-IIS/5.0
Date: Mon, 19 Feb 2007 19:40:40 GMT
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
Connection: close
Content-Length: 4431
Content-Type: text/html

......

I have this web service client in C# but I would like to make it on
ruby. I ask you for some help, example or a hint.
Thanks in advance.

dima

Just a guess (knowing almost nothing about IIS, NTLM nor WSDL): This
seems to be an authentication problem. Somewhere (ruby's tracker?
svn?) there's a patch that adds ntlm auth support for net/http.
Perhaps you could try that. (see ruby-core:10341)
 
R

rcoder

= Response

HTTP/1.1 401 Access Denied
Server: Microsoft-IIS/5.0
Date: Mon, 19 Feb 2007 19:40:40 GMT
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
Connection: close
Content-Length: 4431
Content-Type: text/html

Your web server is rejecting your connection attempt, because you
haven't authenticated. If your client will only run on Windows
systems, you could try the patch below[1], which supports NTLM
authentication; otherwise, consider using client IP address, or some
application-level control, for authentication, as NTLM is a
proprietary Microsoft auth mechanism, and will block most client
platforms from being able to access your service.

-Lennon

1 - http://rubyforge.org/tracker/index.php?func=detail&aid=5177&group_id=426&atid=1700
 
D

dima

Thank you for you swift response.
I guessed that the problem is with authentication and with NTLM.
Unfortunately I do not know what that is all about.
It will be extremely helpful if you have some kind of sample code.

dima
 
R

rcoder

Thank you for you swift response.
I guessed that the problem is with authentication and with NTLM.
Unfortunately I do not know what that is all about.
It will be extremely helpful if you have some kind of sample code.

My suggestion would be to talk to your server administrator, and see
about turning off the NTLM auth -- as I said, it's a proprietary spec
used almost exclusively Microsoft-only shops, and is going to cause
you all kinds of problems when trying to access your web service from
other client platforms. (Plus, anything based on NTLM auth is
inherently insecure, as it's rather easy to crack the LanMan hash
format.)

If you really need HTTP authentication, stick to the basics: HTTP-
Digest, optionally protected by HTTPS if you need transport-level
encryption, too. Take a look here for some examples of using standard
HTTP authentication with a ruby SOAP client:

http://chrismcmahonsblog.blogspot.com/2006/03/soap-basic-authentication-in-ruby.html

Hope that helps,

-rcoder
 
D

dima

I had to use the 3rd party web service that will not change by mine
request.
The rubyntlm has a working http example, throughout socket connection,
that I will explore and try to combine with soap4r.
I will share the results of this quest.

dima
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,152
Members
46,697
Latest member
AugustNabo

Latest Threads

Top