http://www.perlmonks.org?node_id=649135

Khurrum has asked for the wisdom of the Perl Monks concerning the following question:

Hi i have setup a local WCF service with the following specs:

Web Service:
OperationContract: [OperationContract] string SampleTest(Tester test)
DataContract: [DataContract(Name = "Tester")]public class Tester
DataMember: [DataMember(IsRequired = true)]public string Name, [DataMember(IsRequired = true)]public int Age

Now with my Perl script i have been able to successfully call a function with just a simple string parameter but i cant figure out how to call a function which has an object as its argument.

The method i am trying to access is trivial:
public string SampleTest(Tester test)
{
if (test == null)
{
return String.Format("NULL test");
}
}

When i use the following script i always get the above string printed meaning that the argument isnt passed correctly. Here is a relevant portion of the script:

my $method = SOAP::Data->name('SampleTest')
->attr({xmlns => 'http://tempuri.org/'});

my $query =
SOAP::Data
->name(Tester =>
\SOAP::Data->value(
SOAP::Data->name(Name => 'Nathan'),
SOAP::Data->name(Age => 22)
));

print $soap->call($method => $query)->result;

I dont think i am contructing the correct SOAP request. I am not sure how to check my WCF service on what request does it expect. I can access the WSDL file generated by my WCF service but it doesnt tell anything on the format of the SOAP request and response.

Can someone please help me out. Thanks in advance.