[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

SOAP Request Problem

mid

2/23/2007 12:34:00 PM

I've posted about this before but so far I've had no response. Since then
I've also been to #ruby and #rubyonrails on Freenode but still nothing so
I thought I'd post one last time.

===================

I'm trying to use a web service and I have found two ways to go about it.

Option 1
========
I use SOAP4r and I get a response from the service but in a format I'm
unable to extract data from:

E.g.

<SOAP::Mapping:bject:0x4c42486
{http://webservices.globala...}ProcessAddressResult="true"
{http://webservices.globala...}
tmpContact=#<SOAP::Mapping:bject:0x4c41536
{http://webservices.globala...}AddressLine1="1 Murray Street"
{http://webservices.globala...}AddressLine2="Annan"
{http://webservices.globala...}AddressLine3="DG12 6EG"
{http://webservices.globala...}AddressLine4="United Kingdom" etc...

For instance, I don't know how I can access AddressLine3. If I could do
that then this problem is solved.


Option 2
========
I use wsdl2ruby. This method returns data in a format I can use. I can
access elements by using something like response.AddressLine3 etc.

Unfortunately, using wsdl2ruby, I can't seem to create the correct XML
elements.

E.g. When I specify addressline1 and postcode they don't appear as
<n1:addressline1> and <n1:postcode>


<n1:username>username</n1:username>
<n1:password>password</n1:password>
<n1:tmpContact>
<addressline1>1</addressline1>
<postcode>dg12 6eg</postcode>
</n1:tmpContact>

If I could specify these elements with n1: infront of them then this is
another solution that would work but so far I can't do either.
2 Answers

brabuhr

2/23/2007 7:22:00 PM

0

On 2/23/07, mid <mid@niantispammid.com> wrote:
> I'm trying to use a web service and I have found two ways to go about it.
>
> [...]
> Option 2
> ========
> I use wsdl2ruby. This method returns data in a format I can use. I can
> access elements by using something like response.AddressLine3 etc.
>
> Unfortunately, using wsdl2ruby, I can't seem to create the correct XML
> elements.
>
> [...]

I once had a similar issue where the SOAP request generated from my
wsdl2ruby client didn't have proper namespaces specified. My mistake
at that time was passing a Hash or a String instead of the correct
object to the method:

#!/usr/bin/env ruby
require 'UserInfoDriver.rb'

soap = UserInfoSoap.new(endpoint_url)

# run ruby with -d to see SOAP wiredumps.
soap.wiredump_dev = STDERR if $DEBUG

# SYNOPSIS
# GetUserByUsername(parameters)
#
# ARGS
# parameters GetUserByUsername
# - {urn:::Users}GetUserByUsername
#
# RETURNS
# parameters GetUserByUsernameResponse
# - {urn:::Users}GetUserByUsernameResponse
#
parameters = "lapidary"
p soap.getUserByUsername(parameters) # => doesn't work

parameters = GetUserByUsername.new("lapidary")
p soap.getUserByUsername(parameters) # => does work

NAKAMURA, Hiroshi

6/6/2007 2:11:00 PM

0

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Sorry for the late response.

mid wrote:
> I'm trying to use a web service and I have found two ways to go about it.
>
> Option 1
> ========
> I use SOAP4r and I get a response from the service but in a format I'm
> unable to extract data from:
>
> E.g.
>
> <SOAP::Mapping:bject:0x4c42486
> {http://webservices.globala...}ProcessAddressResult="true"
> {http://webservices.globala...}
> tmpContact=#<SOAP::Mapping:bject:0x4c41536
> {http://webservices.globala...}AddressLine1="1 Murray Street"
> {http://webservices.globala...}AddressLine2="Annan"
> {http://webservices.globala...}AddressLine3="DG12 6EG"
> {http://webservices.globala...}AddressLine4="United Kingdom" etc...
>
> For instance, I don't know how I can access AddressLine3. If I could do
> that then this problem is solved.

obj.tmpContact.addressLine3
obj["tmpContact"]["AddressLine3"]

Both should work.

> Option 2
> ========
> I use wsdl2ruby. This method returns data in a format I can use. I can
> access elements by using something like response.AddressLine3 etc.
>
> Unfortunately, using wsdl2ruby, I can't seem to create the correct XML
> elements.
>
> E.g. When I specify addressline1 and postcode they don't appear as
> <n1:addressline1> and <n1:postcode>
>
> <n1:username>username</n1:username>
> <n1:password>password</n1:password>
> <n1:tmpContact>
> <addressline1>1</addressline1>
> <postcode>dg12 6eg</postcode>
> </n1:tmpContact>

Can you try soap4r-1.5.6 RC2 ? You can download RC2 from
http://dev.ctor.org/soap4r/wiki#a2007-06-05...
And can you send me the WSDL you are using? I'll check it and see
what's wrong with it.

Regards,
// NaHi

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRmbAVh9L2jg5EEGlAQJ0agf/Uyqu8+xIoimB7AmsWZ4ln3SLVsNfl9d6
0Tw5jnISzsK88YsKo3YJL15PTMlwPSbXgezjSbFhNNeQcovoET8S93+kDsYLV8cK
RGD6J6tVlm4KPqOFRrmvI7BXuZiZYcbYSd1EDabFd4jjDavFnVJ/dIzQOUO2xdB5
dpQsryHfJSXfvqacbPS0jFVeVZKqUmAEAFy2kslR3bJ+V7yP+CnzPNnpfcwws+cY
q6NFICZAaQWf3s0vFS0x4fhp9l69pBhOGCmYM90rPZP/GY21bn/ocISaRlTk7+8Y
LhFw72rN4HC4aV0x2YLHH9YjqDSzsE22+x17dvVgtLL7X0dbTUFUhw==
=j2jt
-----END PGP SIGNATURE-----