SOAP wsdlDriver doesn't work without soap4r?

Discussion in 'Ruby' started by Henry Jen, Jan 17, 2009.

  1. Henry Jen

    Henry Jen Guest

    Hi,

    I am trying to access a SOAP web service implemented in Java(I
    believe), but there is a problem for xsd:string type argument, the
    result request message always be empty string if I don't have 'soap4r'
    (Inspired by this thread[1]).

    Also, code generated with wsdl2ruby works well.

    Would you please help to me understand why? I consider this is a bug
    unless there is an explanation.

    Here is the request envelop without soap4r,

    <?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>
    <n1:login xmlns:n1="urn:com.example.cwp.cwpidws/wsdl/cwpidws"
    env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <String_1 xsi:nil="true"></String_1>
    <String_2 xsi:nil="true"></String_2>
    <arrayOfString_3 n2:arrayType="xsd:string[3]"
    xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/"
    xsi:type="n2:Array">
    <item>EMAIL</item>
    <item>LASTNAME</item>
    <item>FIRSTNAME</item>
    </arrayOfString_3>
    </n1:login>
    </env:Body>
    </env:Envelope>

    and here is the one with soap4r and works as expected,

    <?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>
    <n1:login xmlns:n1="urn:com.example.cwp.cwpidws/wsdl/cwpidws"
    env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <String_1 xsi:type="xsd:string">username</String_1>
    <String_2 xsi:type="xsd:string">password</String_2>
    <arrayOfString_3 n2:arrayType="xsd:string[3]"
    xmlns:n2="http://schemas.xmlsoap.org/soap/encoding/"
    xsi:type="n2:Array">
    <item>EMAIL</item>
    <item>LASTNAME</item>
    <item>FIRSTNAME</item>
    </arrayOfString_3>
    </n1:login>
    </env:Body>
    </env:Envelope>

    The code is like following, only the wsdl URL and username/password
    are masked from original code.

    #require 'rubygems'
    #gem 'soap4r'

    require 'soap/wsdlDriver'
    require 'pp'
    wsdl = 'https://example.com/cwpidws/cwpidws?WSDL'
    driver = SOAP::WSDLDriverFactory.new(wsdl).create_rpc_driver

    # Log SOAP request and response
    driver.wiredump_file_base = "cwp-log.txt"

    XSD::Charset.encoding = 'UTF8'
    uid = 'username'
    pwd = 'password'
    response = driver.login(uid, pwd, [ "EMAIL", "LASTNAME", "FIRSTNAME" ])
    pp(response)

    The environments are

    $ ruby -v
    ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]
    $ gem list soap4r
    <snip>
    soap4r (1.5.8)

    Cheers,
    Henry

    [1] http://www.ruby-forum.com/topic/155169
     
    Henry Jen, Jan 17, 2009
    #1
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    3
    Views:
    203
    NAKAMURA, Hiroshi
    Sep 16, 2005
  2. Jared Richardson

    Proxy question when using soap/wsdlDriver

    Jared Richardson, Mar 23, 2006, in forum: Ruby
    Replies:
    1
    Views:
    164
    David Ishmael
    Mar 23, 2006
  3. Replies:
    0
    Views:
    186
  4. Tadeusz Bochan

    Help needed with soap/wsdlDriver

    Tadeusz Bochan, Aug 25, 2006, in forum: Ruby
    Replies:
    0
    Views:
    141
    Tadeusz Bochan
    Aug 25, 2006
  5. Alin Alin

    rubygems soap/wsdlDriver issue

    Alin Alin, Jan 16, 2007, in forum: Ruby
    Replies:
    2
    Views:
    124
    Alin Popa
    Jan 16, 2007
Loading...

Share This Page