This article is talking about the web service client.
Firstly the SOAP message model:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <tns:scheduleRequest xmlns:tns="http://webservice.oo.oo.oo.com"> <identifier>DSWINV1</identifier> <action>SET</action> <startDate>TODAY</startDate> <startTime>NOW</startTime> <interval>600</interval> <count>10</count> <ignoreMissed>TRUE</ignoreMissed> <allowOverwrite>TRUE</allowOverwrite> </tns:scheduleRequest> </soapenv:Body> </soapenv:Envelope>
next, the sample code of sending a message,
public void sendMessage(Message message) throws MalformedURLException, SOAPException { URL endPoint = new URL(url + serviceName); SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance(); SOAPConnection connection = soapConnFactory.createConnection(); MessageFactory messageFactory = MessageFactory.newInstance(); // create soap message SOAPMessage message = messageFactory.createMessage(); MimeHeaders mh = message.getMimeHeaders(); mh.addHeader("SOAPAction", "schedule"); SOAPPart soapPart = message.getSOAPPart(); SOAPEnvelope envelope = soapPart.getEnvelope(); SOAPBody body = envelope.getBody(); SOAPElement requestElement = body.addChildElement("scheduleRequest", NS_PREFIX, TARGET_NAMESPACE); SOAPElement identifierElement = requestElement.addChildElement("identifier", null); identifierElement.addTextNode(schedule.getIdentifier()); SOAPElement actionElement = requestElement.addChildElement("action", null); actionElement.addTextNode(schedule.getAction()); SOAPElement startDateElement = requestElement.addChildElement("startDate", null); startDateElement.addTextNode(schedule.getStartDate()); SOAPElement startTimeElement = requestElement.addChildElement("startTime", null); startTimeElement.addTextNode(schedule.getStartTime()); SOAPElement intervalElement = requestElement.addChildElement("interval", null); intervalElement.addTextNode(String.valueOf(schedule.getInterval())); SOAPElement countElement = requestElement.addChildElement("count", null); countElement.addTextNode(String.valueOf(schedule.getCount())); SOAPElement ignoreMissedElement = requestElement.addChildElement("ignoreMissed", null); ignoreMissedElement.addTextNode(schedule.getIgnoreMissed()); SOAPElement allowOverwriteElement = requestElement.addChildElement("allowOverwrite", null); allowOverwriteElement.addTextNode(schedule.getAllowOverwrite()); message.saveChanges(); try { message.writeTo(System.out); } catch (IOException e) { e.printStackTrace(); } SOAPMessage reply = connection.call(message, endPoint); try { if(reply!=null) reply.writeTo(System.out); } catch (IOException e) { e.printStackTrace(); } connection.close(); }