SOAP::Lite format
Chung <[email protected]> Tue, 25 Mar 2003 18:05:11 +0800
| Newsgroups | gmane.comp.windows.devel.soap.general |
|---|---|
| Message-ID | <006201c2f2b6$060bc700$bc02a8c0@chung> |
Hello guys,
I am trying to get access to .NET soap service from perl using SOAP::Lite
and have hit a brickwall....
This is a VALID xml request:
********************************************************
POST /WebServices/Demo/demo.asmx HTTP/1.1
Host: XXXXXXXXXXXX.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: http://XXXXXXXXXXXX.com/WebServices/Demo/getPrice
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getPrice xmlns="http://XXXXXXXXXXXX.com/WebServices/Demo/">
<a_Id>string</a_Id>
</getPrice>
</soap:Body>
</soap:Envelope>
********************************************************
This is a VALID xml reponse:
********************************************************
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getPriceResponse xmlns="http://XXXXXXXXXX.com/WebServices/Demo/">
<getPriceResult>
<Id>string</Id>
<Date>dateTime</Date>
<MM>decimal</MM>
<Price>decimal</Price>
<session>decimal</session>
</getPriceResult>
</getPriceResponse>
</soap:Body>
</soap:Envelope>
********************************************************
I have a problem:
The output from SOAP::Lite is as follows:
********************************************************
Content-Length: 610
Content-Type: text/xml; charset=utf-8
SOAPAction: http://XXXXXXXXXXXX.com/WebServices/Demo/getPrice
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<namesp1:getPrice xmlns:namesp1="http://XXXXXXXXXXXX.com/WebServices/Demo">
<a_Id xsi:type="xsd:string">
A0003
</a_Id>
</namesp1:getPrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
********************************************************
Which is close but not exactly the same as what is reqired. For example
SOAP-ENV: instead of soap:; ??? </namesp1:getPrice> : instead of </getPrice>???
Also server response an incorrect result to me.
Response from Server side is as follows:
********************************************************
SOAP::Transport::HTTP::Client::send_receive: HTTP::Response=HASH(0x8459fb4)
SOAP::Transport::HTTP::Client::send_receive: HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Date: Tue, 23 Mar 2003 07:58:18 GMT
Server: Microsoft-IIS/5.0
Content-Length: 448
Content-Type: text/xml; charset=utf-8
Client-Date: Tue, 23 Mar 2003 08:12:47 GMT
<?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>
<getPriceResponse xmlns="http://XXXXXXXX.com/WebServices/Demo/">
<getPriceResult>
<Date>
0001-01-01T00:00:00.0000000+08:00
</Date>
</getPriceResult>
</getPriceResponse>
</soap:Body>
SOAP::Deserializer::deserialize: ()
SOAP::Parser::decode: ()
SOAP::SOM::new: ()
Use of uninitialized value in print at demo.pl line 49.
0001-01-01T00:00:00.0000000+08:00
Use of uninitialized value in print at demo.pl line 51.
Use of uninitialized value in print at demo.pl line 52.
Use of uninitialized value in print at demo.pl line 53.
********************************************************
Can anybody teach me wheres the error and how to solve the problem?
Below is my perl code if this helps
Thanks in advance
Chung
My perl program:
********************************************************
use strict;
use SOAP::Lite +trace => 'all';
my $code = "A0003";
my $hdr = SOAP::Header->uri('http://XXXXXXXXXXXX.com/WebServices/Demo')->prefix('');
my $s = SOAP::Lite
-> uri('http://XXXXXXXXXXXX.com/WebServices/Demo')
-> proxy('http://XXXXXXXXXXXX.com/WebServices/Demo/wsdemo.asmx')
-> on_action(sub{sprintf '%s/%s', @_ });
my $result = $s->getPrice(
SOAP::Data->name(a_Id => $code)->uri('http://XXXXXXXXXXXX.com/WebServices/Demo')->prefix('')
);
print $result->{Id}, "\n";
print $result->{Date}, "\n";
print $result->{MM}, "\n";
print $result->{Price}, "\n";
print $result->{session}, "\n";
********************************************************
===================================
This list is hosted by DevelopMentor http://www.develop.com
You may be interested in Guerrilla Web Services .NET, 14 April 2003, in Torrance, CA
http://www.develop.com/courses/gwsdotnet
View archives and manage your subscription(s) at http://discuss.develop.com