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