Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
SOAP wsdlDriver doesn't work without soap4r?
Henry Jen
1/17/2009 8:37:00 AM
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/XMLSc...
xmlns:env="
http://schemas.xmlsoap.org/soap/envel...
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/encod...
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/XMLSc...
xmlns:env="
http://schemas.xmlsoap.org/soap/envel...
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/encod...
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...
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/to...
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
SOAP wsdlDriver doesn't work without soap4r?
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password