SOAP Web Service Tutorials - Herong's Tutorial Examples - Version 5.02, by Dr. Herong Yang
SOAP 1.1 Request and Response of GetSpeech
This section provides a tutorial example on how to use SocketRequestResponse.pl to send a SOAP 1.1 request for the GetSpeech Web service provided by www.xmlme.com. The response of GetSpeech received looks very nice.
In the previous tutorial, I discovered a code bug in my socket test program, SocketRequestResponse.pl. The bug is that the request file is opened in non-binary mode and the read() functions converts \r\n to \n resulting less bytes used in the SOAP request message.
I modified SocketRequestResponse.pl to open the request file in binary mode:
#- SocketRequestResponseBinary.pl
#- Copyright (c) 2009 by Dr. Herong Yang, herongyang.com
#- All rights reserved
#
use Socket;
($host, $port, $in, $out) = @ARGV;
#- Reading the request
open(IN, "< $in");
binmode(IN);
read(IN, $req, (-s $in));
close(IN);
#- Connecting
socket(SOCK,PF_INET,SOCK_STREAM,getprotobyname('tcp'));
connect(SOCK, sockaddr_in($port, inet_aton($host)));
select(SOCK); $| = 1; select(STDOUT);
#- Sending the request
print SOCK $req;
#- Receiving the response
open(OUT, "> $out");
while ($line=<SOCK>) {
print OUT $line;
}
close(OUT);
#- Closing connection
close(SOCK);
exit;
Here is the test result after fixing the bug:
\herong>SocketRequestResponseBinary.pl www.xmlme.com 80
soap_1_1_GetSpeech.req soap_1_1.res
\herong>type soap_1_1.res
HTTP/1.1 200 OK
Connection: close
Date: ... 2009
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Cache-Control: private, max-age=0
Content-Type: text/xml; charset=utf-8
Content-Length: 1942
<?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>
<GetSpeechResponse xmlns="http://xmlme.com/WebServices">
<GetSpeechResult>
<SPEECH><PLAY>HAMLET</PLAY>
<SPEAKER>HAMLET</SPEAKER>To be, or not to be:
that is the question: Whether 'tis nobler in the mind to
...</SPEECH>
</GetSpeechResult>
</GetSpeechResponse>
</soap:Body>
</soap:Envelope>
Cool. My first SOAP 1.1 test with SocketRequestResponseBinary.pl worked nicely. Some notes on the SOAP response:
Last update: 2009.
Table of Contents
Introduction to SOAP (Simple Object Access Protocol)
SOAP Message Transmission and Processing
SOAP Message Exchange Patterns
Perl SOAP::Lite - SOAP Server-Client Communication Module
►Perl Socket Test Program for HTTP and SOAP
SocketRequestResponse.pl - Socket Level Testing Program
Examples of HTTP 1.0 Requests and Responses
Examples of HTTP 1.1 Requests and Responses
SOAP 1.1 Request - Content-Length Too Small
SOAP 1.1 Request - Content-Length Too Large
►SOAP 1.1 Request and Response of GetSpeech
SOAP 1.2 Request and Response of GetSpeech
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
PHP SOAP Extension Client Programs
PHP SOAP Extension Server Programs
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