SOAP Web Service Tutorials - Herong's Tutorial Examples - v5.13, by Herong Yang
soapversion('1.2') Sets Correct Envelope namespace
This section provides a tutorial example on how to use soapversion('1.2') to tell service() to use the correct namespace for the Envelope.
From previous tutorial, I learned that the service() function uses SOAP 1.1 by default and it put the wrong namespace to the Envelope. Now let me force it to use SOAP 1.2 and see what happens:
#- GetSpeech_WSDL_localhost_1_2.pl #- Copyright (c) 2009 HerongYang.com. All Rights Reserved. #- All rights reserved # use SOAP::Lite +trace; my $client = SOAP::Lite->new() ->soapversion('1.2') ->service('file:///C:/herong/GetSpeech.wsdl') ->readable('true'); #- Overriding the constant for SOAP 1.2 $SOAP::Constants::DEFAULT_HTTP_CONTENT_TYPE = 'application/soap+xml'; $client->GetSpeech('To be, or not to be');
Result of GetSpeech_WSDL_localhost_1_2.pl:
POST http://localhost/soap11 HTTP/1.1 Accept: text/xml Accept: multipart/* Accept: application/soap Content-Length: 831 Content-Type: application/soap+xml; charset=utf-8 SOAPAction: "http://xmlme.com/WebServices/GetSpeech" <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding" xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:tns="http://xmlme.com/WebServices"> <soap:Body> <tns:GetSpeech> <Request xsi:type="s:string">To be, or not to be</Request> </tns:GetSpeech> </soap:Body> </soap:Envelope> ... 500 Can't connect to localhost:80 (connect: Unknown error)
Note that:
The request looks good to me now. I will try it with the real Web service server at xmlme.com in the next tutorial.
Table of Contents
Introduction to SOAP (Simple Object Access Protocol)
SOAP Message Transmission and Processing
SOAP MEP (Message Exchange Patterns)
PHP SOAP Extension Client Programs
PHP SOAP Extension Server Programs
PHP SOAP Web Service Example - getTemp
Perl SOAP::Lite - SOAP Server-Client Communication Module
Perl Socket Test Program for HTTP and SOAP
Perl SOAP::Lite for NumberToWords SOAP 1.1 Web Service
Perl SOAP::Lite for SOAP 1.2 Web Services
Java Socket and HttpURLConnection for SOAP
SAAJ - SOAP with Attachments API for Java
SoapUI - SOAP Web Service Testing Tool
WS-Security - SOAP Message Security Extension
WS-Security X.509 Certificate Token
Perl SOAP::Lite for GetSpeech SOAP 1.1 Web Service
Perl SOAP::Lite 0.710 for SOAP 1.2 Web Services
►Perl SOAP::Lite 0.710 for WSDL
First WSDL Test Failed with SOAP::Lite
Downloading and Editing WSDL Document
Testing service() Function Locally
►soapversion('1.2') Sets Correct Envelope namespace
Error: Object reference not set to an instance of an object