From: cremes.devlist@...
Date: 2006-06-02T03:00:53+09:00
Subject: Re: Web Services Issue
On Jun 1, 2006, at 11:53 AM, Chris Johansen wrote:
> unknown wrote:
>> On May 31, 2006, at 5:17 PM, chris Johansen wrote:
>>
>>> require 'soap/wsdlDriver'
>>>
>>> wsdl_url = "http://usint.skire.com/ws/services/mainservice?WSDL"
>>>
>>> soap = SOAP::WSDLDriverFactory.new('skire.wsdl').create_rpc_driver
>>>
>>> soap.wiredump_file_base="soapresult"
>>>
>>> result = soap.getBPList("one", "two", "three", "four", "five",
>>> "six",
>>> "seven")
>>
>> Chuck Remes
>> cremes@mac.com
>> www.familyvideovault.com (not yet live!)
>>
>> I didn't actually run this code, but just eyeballing it I think I see
>> an error. You are fetching the WSDL and storing it as 'wsdl_url' but
>> I don't see you using it to create your soap driver. I think the line
>> ought to be:
>>
>> soap = SOAP::WSDLDriverFactory.new(wsdl_url).create_rpc_driver
>>
>> Or maybe I'm wrong. Give it a try and see.
>>
>> cr
>
> OOPS! No that's a mistake in my not checking it closely enough when I
> posted it. I appologize. At some point I had made a local copy of
> the
> wsdl to rule out there being any issues on the network. You are
> correct
> that the line should infact read:
>
> soap = SOAP::WSDLDriverFactory.new(wsdl_url).create_rpc_driver
>
> The issue continues regardless of which one I am using (local or from
> the site). Thanks for catching my mistake. The issue is still
> exists,
> however.
Chris,
I got it to work. Here's what I did.
I downloaded the wsdl file to a local file and looked at the method
call in detail. I noticed something interesting and out of place.
Look at this definition and take a close look at capitalization:
Please notice that the fourth element, the one that is consistently
screwed up, has a name starting with a cap letter. So what I did was
create an edited version of the wsdl and changed that name from
"BPName" to "bpName" in both places it shows up (for that specific
method definition). I then ran your code again and it produced the
correct soap request as shown below:
one
two
three
four
- five
six
- seven
I don't know if the SOAP standard allows for those names to start
with capitals, but for sure the ruby code doesn't handle it correctly.
I imagine the right way to fix this is to check the SOAP standard to
see what it says (or if it's mute on the topic of capitalization) and
then, depending on that answer, modify the SOAP library to downcase
these strings or just the first letter.
Anyway, mystery solved!
cr