SOAP Request Problem

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.globaladdress.net}ProcessAddressResult=“true”
{http://webservices.globaladdress.net}
tmpContact=#<SOAP::Mapping:bject:0x4c41536
{http://webservices.globaladdress.net}AddressLine1=“1 Murray Street”
{http://webservices.globaladdress.net}AddressLine2=“Annan”
{http://webservices.globaladdress.net}AddressLine3=“DG12 6EG”
{http://webservices.globaladdress.net}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.

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)

···

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.

[...]

#
# 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

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.globaladdress.net}ProcessAddressResult="true"
{http://webservices.globaladdress.net}
tmpContact=#<SOAP::Mapping:bject:0x4c41536
{http://webservices.globaladdress.net}AddressLine1="1 Murray Street"
{http://webservices.globaladdress.net}AddressLine2="Annan"
{http://webservices.globaladdress.net}AddressLine3="DG12 6EG"
{http://webservices.globaladdress.net}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:1.5.6-RC2
And can you send me the WSDL you are using? I'll check it and see
what's wrong with it.

Regards,
// NaHi