SOAP Web Service Tutorials - Herong's Tutorial Examples - Version 5.02, by Dr. Herong Yang
First SOAPConnection Test Program
This section provides a tutorial example on how to create your first SOAPConnection test program that sends out a simple hello SOAP request message.
To see how SAAJ works, I wrote this quick test program, SOAPConnectionTest.java:
/** * SOAPConnectionTest.java * Copyright (c) 2009 by Dr. Herong Yang, herongyang.com * All rights reserved */ import java.io.*; import javax.xml.soap.*; public class SOAPConnectionTest { public static void main(String[] args) { PrintStream out = System.out; // Checking command line arguments if (args.length < 1) { out.println("Usage:"); out.println("java SOAPConnectionTest url"); return; } String sURL = args[0]; try { // Building the request document SOAPMessage reqMsg = MessageFactory.newInstance().createMessage(); SOAPEnvelope envelope = reqMsg.getSOAPPart().getEnvelope(); SOAPBody body = envelope.getBody(); body.addBodyElement(envelope.createName("Hello")); // Connecting and calling SOAPConnection con = SOAPConnectionFactory.newInstance().createConnection(); SOAPMessage resMsg = con.call(reqMsg, sURL); con.close(); // Showing output out.println("\n\nRequest:"); reqMsg.writeTo(out); out.println("\n\nResponse:"); resMsg.writeTo(out); } catch (Exception e) { e.printStackTrace(); } } }
To run this program, I need to run my socket request response server program with a sample SOAP 1.1 response file, soap_1_1_server.res:
HTTP/1.1 200 OK Connection: close Content-Type: text/xml; charset=utf-8 Content-Length: 306 <?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> <HelloRes>Hello Herong!</HelloRes> </soap:Body> </soap:Envelope>
Then run SocketRequestResponseServe.java in a command window:
\herong>java SocketRequestResponseServer soap_1_1_server.res server.req Listening at 8888
Now in another command window, run SOAPConnectionTest.java:
\herong>java -classpath .;\herong\lib\saaj-api.jar;\herong\lib\saaj-impl.jar SOAPConnectionTest http://localhost:8888 Request: <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <Hello/> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Response: <?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> <HelloRes>Hello Herong!</HelloRes> </soap:Body> </soap:Envelope>
Ok. My SOAPConnectionTest.java seems to be working by looking at the client side. Now you can check the entire request recorded by the server side test program in the first command window:
Connection received from /127.0.0.1 Request length: 422 Response length: 391 \herong\>type server.req POST / HTTP/1.1 Accept: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Content-Type: text/xml; charset=utf-8 Content-Length: 155 Cache-Control: no-cache Pragma: no-cache User-Agent: Java/1.6.0_06 Host: localhost:8888 Connection: keep-alive <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header/> <SOAP-ENV:Body> <Hello/> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
The request header lines generated by the SOAPConnection class all look ok me.
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
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
SAAJ API 1.3 Classes and Interfaces Overview
SAAJ API and Default Implementation in JDK 1.6.0
SAAJ API Reference Implementation 1.3.4
►First SOAPConnection Test Program
Creating SOAPConnection and SOAPMessage Objects
SAAJ SOAPMessage Structure and Classes/Interfaces
Populating the SOAP Body with Request XML Elements
Don't Use xml* as namespace Prefix
addHeader() - Setting SOAPAction Header Line
Calling GetSpeech SOAP 1.1 with SAAJ
SOAPConstants.SOAP_1_2_PROTOCOL
Calling GetSpeech SOAP 1.2 with SAAJ
SoapUI - SOAP Web Service Testing Tool
WS-Security - SOAP Message Security Extension
WS-Security X.509 Certificate Token