SOAP Web Service Tutorials - Herong's Tutorial Examples - v5.11, by Dr. Herong Yang
Outdated: SOAP 1.1 Request - Content-Length Too Small
This section provides a tutorial example of SOAP 1.1 request to use the GetSpeech Web service provided at xmlme.com. A 'Bad Request' error is received, if Content-Length is not enough to cover the entire XML message in the request.
Note that the "GetSpeech" Web service provided by xmlme.com is no longer available.
Now let's use my Perl socket test program to send a SOAP 1.1 request to a public Web service provided at xmlme.com.
xmlme.com provides a public Web service called GetSpeech with SOAP 1.1. GetSpeech reads a phrase from one of Shakespeare's plays from the request and returns speech, speaker, and play in the response. According to the instructions given at http://www.xmlme.com/WSShakespeare.asmx?op=GetSpeech, I prepared by first request sample, soap_1_1_GetSpeech.req:
POST /WSShakespeare.asmx HTTP/1.1 Host: www.xmlme.com Content-Type: text/xml; charset=utf-8 Content-Length: 100 SOAPAction: "http://xmlme.com/WebServices/GetSpeech" <?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> <GetSpeech xmlns="http://xmlme.com/WebServices"> <Request>To be, or not to be</Request> </GetSpeech> </soap:Body> </soap:Envelope>
Here is the response I got from my first test:
C:\herong>SocketRequestResponse.pl www.xmlme.com 80 soap_1_1_GetSpeech.req soap_1_1.res C:\herong>more soap_1_1.res HTTP/1.1 400 Bad Request Connection: close Date: ... 2009 Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 Cache-Control: private Content-Length: 0
The "Bad Request" error was expected, because I put 100 as the "Content-Length" in the request. Here is my guess on what happened to this example:
Now I learned that HTTP servers do pay attention to the "Content-Length" header line in the request. I will provide a better value for "Content-Length" and try again in the next tutorial.
Table of Contents