Javolution 6.0.0 java
WebServiceClient.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2012 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.xml.ws;
10 
11 import java.io.IOException;
14 import javolution.text.Text;
21 
50 public abstract class WebServiceClient {
51 
55  public static final String ENVELOPE_PREFIX = "env";
56 
60  public static final String ENVELOPE_URI = "http://schemas.xmlsoap.org/soap/envelope/";
61 
65  Object _url;
66 
70  public WebServiceClient() {}
71 
77  public WebServiceClient setAddress(String address) {
78  try {
79  _url = new java.net.URL(address);
80  } catch (java.net.MalformedURLException e) {
81  throw new IllegalArgumentException("Malformed URL: " + address);
82  }
83  return this;
84  }
85 
89  public void invoke() throws IOException, XMLStreamException {
90  try {
91  // Formats the request message (we cannot write directly to
92  // the output stream because the http request requires the length.
95  final XMLStreamWriter xmlOut = _writer.getStreamWriter();
97  xmlOut.writeStartElement(csq(ENVELOPE_URI), csq("Envelope"));
99  xmlOut.writeStartElement(csq(ENVELOPE_URI), csq("Header"));
100  xmlOut.writeEndElement();
101  xmlOut.writeStartElement(csq(ENVELOPE_URI), csq("Body"));
103  _writer.close();
104 
105  // Sends the request.
106  if (_url == null)
107  throw new IOException("URL not set");
108 
109  java.net.HttpURLConnection http = (java.net.HttpURLConnection) ((java.net.URL) _url)
110  .openConnection();
111  http.setRequestProperty("Content-Length",
112  String.valueOf(_buffer.length()));
113  http.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
114  // httpConn.setRequestProperty("SOAPAction", "");
115  http.setRequestMethod("POST");
116  http.setDoOutput(true);
117  http.setDoInput(true);
118  _utf8Writer.setOutput(http.getOutputStream());
119 
120  _utf8Writer.append(_buffer);
121  _utf8Writer.close();
122 
123  // Reads the response.
124 
125  _reader.setInput(http.getInputStream());
126 
127  final XMLStreamReader xmlIn = _reader.getStreamReader();
128  while (xmlIn.hasNext()) {
129  if ((xmlIn.next() == XMLStreamReader.START_ELEMENT)
130  && xmlIn.getLocalName().equals("Body")
131  && xmlIn.getNamespaceURI().equals(ENVELOPE_URI)) {
132  // Found body, position reader to next element.
133  xmlIn.next();
135  break;
136  }
137  }
138 
139  } finally {
140  _reader.close();
141  _writer.reset();
142  _out.reset();
143  _buffer.clear();
144  _utf8Writer.reset();
145  _reader.reset();
146  }
147  }
148 
149  private final TextBuilder _buffer = new TextBuilder();
150  private final AppendableWriter _out = new AppendableWriter();
151  private final XMLObjectWriter _writer = new XMLObjectWriter();
153  private final XMLObjectReader _reader = new XMLObjectReader();
154 
155 
156 
162  protected abstract void writeRequest(XMLObjectWriter out)
163  throws XMLStreamException;
164 
171  protected void readResponse(XMLObjectReader in) throws XMLStreamException {
172  final XMLStreamReader xml = in.getStreamReader();
173  while (xml.hasNext()) {
174  switch (xml.next()) {
176  System.out.println("Start Document");
177  break;
179  System.out.println("End Document.");
180  break;
182  System.out.println("Start Element: " + xml.getLocalName()
183  + "(" + xml.getNamespaceURI() + ")");
184  for (int i = 0, n = xml.getAttributeCount(); i < n; i++) {
185  System.out.println(" Attribute: "
186  + xml.getAttributeLocalName(i) + "("
187  + xml.getAttributeNamespace(i) + "), Value: "
188  + xml.getAttributeValue(i));
189  }
190  break;
192  if (xml.getLocalName().equals("Body")
194  return; // End body.
195  System.out.println("End Element: " + xml.getLocalName()
196  + "(" + xml.getNamespaceURI() + ")");
197  break;
199  System.out.println("Characters: " + xml.getText());
200  break;
201  case XMLStreamReader.CDATA:
202  System.out.println("CDATA: " + xml.getText());
203  break;
205  System.out.println("Comment: " + xml.getText());
206  break;
207  case XMLStreamReader.SPACE:
208  System.out.println("Space");
209  break;
210  default:
211  System.out.println(xml);
212  }
213  }
214 
215  }
216 
217  // For J2ME compatiblity.
218  private static final CharSequence csq(Object string) {
219  return (string instanceof CharSequence) ? (CharSequence) string : Text
220  .valueOf(string);
221 
222  }
223 }
javolution.xml.stream.XMLStreamWriter.setPrefix
void setPrefix(CharSequence prefix, CharSequence uri)
javolution.xml.XMLObjectWriter.reset
void reset()
Definition: XMLObjectWriter.java:306
javolution.xml.XMLObjectReader.reset
void reset()
Definition: XMLObjectReader.java:286
javolution
javolution.xml.ws.WebServiceClient.WebServiceClient
WebServiceClient()
Definition: WebServiceClient.java:70
javolution.xml.stream.XMLStreamConstants.END_DOCUMENT
static final int END_DOCUMENT
Definition: XMLStreamConstants.java:61
javolution.xml.stream.XMLStreamWriter.writeEndElement
void writeEndElement()
javolution.xml.stream.XMLStreamConstants.CDATA
static final int CDATA
Definition: XMLStreamConstants.java:81
javolution.text.Text
Definition: Text.java:62
javolution.xml.ws.WebServiceClient.readResponse
void readResponse(XMLObjectReader in)
Definition: WebServiceClient.java:171
javolution.io
Definition: AppendableWriter.java:9
javolution.xml.ws.WebServiceClient._out
final AppendableWriter _out
Definition: WebServiceClient.java:150
javolution.text.TextBuilder
Definition: TextBuilder.java:29
javolution.text.TextBuilder.clear
final TextBuilder clear()
Definition: TextBuilder.java:725
javolution.io.UTF8StreamWriter.setOutput
UTF8StreamWriter setOutput(OutputStream out)
Definition: UTF8StreamWriter.java:82
javolution.xml.stream.XMLStreamReader.getAttributeValue
CharArray getAttributeValue(CharSequence namespaceURI, CharSequence localName)
javolution.xml.ws.WebServiceClient._utf8Writer
final UTF8StreamWriter _utf8Writer
Definition: WebServiceClient.java:152
javolution.text.CharArray.equals
boolean equals(Object that)
Definition: CharArray.java:204
javolution.xml.ws.WebServiceClient._writer
final XMLObjectWriter _writer
Definition: WebServiceClient.java:151
javolution.xml.XMLObjectWriter.close
void close()
Definition: XMLObjectWriter.java:284
javolution.io.UTF8StreamWriter
Definition: UTF8StreamWriter.java:36
javolution.xml.ws.WebServiceClient.writeRequest
abstract void writeRequest(XMLObjectWriter out)
javolution.xml.stream.XMLStreamReader.hasNext
boolean hasNext()
javolution.xml.ws.WebServiceClient.setAddress
WebServiceClient setAddress(String address)
Definition: WebServiceClient.java:77
javolution.io.AppendableWriter.reset
void reset()
Definition: AppendableWriter.java:159
javolution.xml.XMLObjectReader.close
void close()
Definition: XMLObjectReader.java:269
javolution.xml.stream.XMLStreamConstants.START_ELEMENT
static final int START_ELEMENT
Definition: XMLStreamConstants.java:24
javolution.xml.stream.XMLStreamConstants.COMMENT
static final int COMMENT
Definition: XMLStreamConstants.java:44
javolution.xml.stream.XMLStreamReader.getAttributeCount
int getAttributeCount()
javolution.xml.stream.XMLStreamException
Definition: XMLStreamException.java:17
javolution.xml.ws.WebServiceClient.csq
static final CharSequence csq(Object string)
Definition: WebServiceClient.java:218
javolution.xml.stream.XMLStreamConstants.SPACE
static final int SPACE
Definition: XMLStreamConstants.java:51
javolution.xml.stream.XMLStreamReader.getAttributeNamespace
CharArray getAttributeNamespace(int index)
javolution.xml.XMLObjectReader
Definition: XMLObjectReader.java:39
javolution.xml.ws.WebServiceClient.invoke
void invoke()
Definition: WebServiceClient.java:89
javolution.xml.XMLObjectWriter
Definition: XMLObjectWriter.java:40
javolution.text
Definition: CharArray.java:9
javolution.text.TextBuilder.length
final int length()
Definition: TextBuilder.java:91
javolution.xml.ws.WebServiceClient.ENVELOPE_PREFIX
static final String ENVELOPE_PREFIX
Definition: WebServiceClient.java:55
javolution.xml.stream.XMLStreamConstants.CHARACTERS
static final int CHARACTERS
Definition: XMLStreamConstants.java:39
javolution.xml.ws.WebServiceClient
Definition: WebServiceClient.java:50
javolution.xml.stream.XMLStreamReader.next
int next()
javolution.xml.XMLObjectWriter.setOutput
XMLObjectWriter setOutput(OutputStream out)
Definition: XMLObjectWriter.java:122
javolution.xml.stream.XMLStreamWriter
Definition: XMLStreamWriter.java:47
javolution.io.AppendableWriter
Definition: AppendableWriter.java:22
javolution.xml.stream.XMLStreamConstants.END_ELEMENT
static final int END_ELEMENT
Definition: XMLStreamConstants.java:29
javolution.xml.ws.WebServiceClient._url
Object _url
Definition: WebServiceClient.java:65
javolution.xml.ws.WebServiceClient.ENVELOPE_URI
static final String ENVELOPE_URI
Definition: WebServiceClient.java:60
javolution.xml.stream.XMLStreamReader.getAttributeLocalName
CharArray getAttributeLocalName(int index)
javolution.xml.stream.XMLStreamReader
Definition: XMLStreamReader.java:50
javolution.xml.stream.XMLStreamReader.getText
CharArray getText()
javolution.io.UTF8StreamWriter.close
void close()
Definition: UTF8StreamWriter.java:306
javolution.xml.stream.XMLStreamReader.getLocalName
CharArray getLocalName()
javolution.xml.ws.WebServiceClient._buffer
final TextBuilder _buffer
Definition: WebServiceClient.java:149
javolution.xml.XMLObjectReader.setInput
XMLObjectReader setInput(InputStream in)
Definition: XMLObjectReader.java:119
javolution.xml.stream.XMLStreamReader.getNamespaceURI
CharArray getNamespaceURI(CharSequence prefix)
javolution.io.UTF8StreamWriter.reset
void reset()
Definition: UTF8StreamWriter.java:326
javolution.xml.stream.XMLStreamWriter.writeStartElement
void writeStartElement(CharSequence localName)
javolution.xml.ws.WebServiceClient._reader
final XMLObjectReader _reader
Definition: WebServiceClient.java:153
javolution.xml
Definition: DefaultXMLFormat.java:9
javolution.xml.XMLObjectReader.getStreamReader
XMLStreamReader getStreamReader()
Definition: XMLObjectReader.java:107
javolution.xml.stream
Definition: Location.java:9
javolution.xml.stream.XMLStreamConstants.START_DOCUMENT
static final int START_DOCUMENT
Definition: XMLStreamConstants.java:56
javolution.xml.XMLObjectWriter.getStreamWriter
XMLStreamWriter getStreamWriter()
Definition: XMLObjectWriter.java:111
javolution.xml.stream.XMLStreamWriter.writeNamespace
void writeNamespace(CharSequence prefix, CharSequence namespaceURI)
javolution.io.AppendableWriter.setOutput
AppendableWriter setOutput(Appendable output)
Definition: AppendableWriter.java:48