I need to call a .Net web service that takes an array or object as a
parameter from a PERL client. I have been trying to use the PERL SOAP::Lite
package to do this without success. I can call one that takes a simple
type, such as int or string, but not an array or object. Please help!!! My
code that I have written to call the web service and the SOAP packets that
get sent and received are below. It seems like no matter what I do I cannot
get it to recognize the array that I pass. Please CC my email address with
any responses. My address is as follows with the $# removed:
J$#im.Fo$#wl$#er@E$#D$#S$#.c$#o$#m
Thanks in advance for any assistance.
use SOAP::Lite;
my @web;
@web[0] = '234234';
@web[1] = 'Test1';
@web[2] = '3454545';
@web[3] = 'Test2';
my $s = SOAP::Lite
-> uri('EDS.Galileo/')
-> proxy('http://testedsapps.weyer.com/Galileo/Galileo.asmx')
-> on_action(sub{sprintf '%s%s', @_ })
-> on_debug(sub{print@_}) ;
;
$result =
$s->UpdateIncident(SOAP::Data->name('TicketValues')->value(SOAP::Data->value
(\@web)));
unless ($result->fault) {
if (length ($result->result()) == 0)
{
print "result = ".$result->result()."\n";
}
} else {
print "error ".$result->faultstring."\n";
unless ($result->fault) {
if (length ($result->result()) == 0)
{
print "result = ".$result->result()."\n";
}
} else {
print "error ".$result->faultstring."\n";
}
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<namesp1:UpdateIncident xmlns:namesp1="EDS.Galileo/">
<TicketValues xsi:type="SOAP-ENC:Array"
SOAP-ENC:arrayType="xsd:string[4]">
<item xsi:type="xsd:string">"600100024"</item>
<item xsi:type="xsd:string">"GFS000999"</item>
<item xsi:type="xsd:string">"536871002"</item>
<item xsi:type="xsd:string">"1092585900"</item>
</TicketValues>
</namesp1:UpdateIncident>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
HTTP/1.1 500 (Internal Server Error) Internal Server Error.
Cache-Control: private
Connection: close
Date: Thu, 19 Aug 2004 14:07:57 GMT
Server: Microsoft-IIS/5.0
Content-Length: 732
Content-Type: text/xml; charset=utf-8
Client-Date: Thu, 19 Aug 2004 14:08:41 GMT
Client-Peer: 10.31.240.10:80
Client-Response-Num: 1
MicrosoftOfficeWebServer: 5.0_Pub
X-AspNet-Version: 1.1.4322
X-Powered-By: ASP.NET
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>System.Web.Services.Protocols.SoapExc eption: Server was
unable to process request. ---> System.NullReferenceException: Object
reference not set to an instance of an object.
at EDS.Galileo.Galileo.UpdateIncident(String[] TicketValues) in
c:\inetpub\wwwroot\galileo\galileo.asmx.cs:line 484
--- End of inner exception stack trace ---</faultstring>
<detail />
</soap:Fault>
</soap:Body>
</soap:Envelope>