Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

OuputFormat and XMLSerializer's alternative?

1,215 views
Skip to first unread message

Denny

unread,
Jun 4, 2008, 1:41:29 AM6/4/08
to
I am making a sample web service program using WSDL and SOAP under JDK
1.4. To make that, I used a source below included in XML and JAVA;
developing web application 2nd Edition. As you know, Since the two
classes, OutputFomat and XMLSerializer, had been deprecated, I can't
use that source. To use that source, How I can modify it?? plz let me
know the ....

----------------------------------------------------
import java.io.FileReader;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.HttpURLConnection;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;

import com.wm.ws.mime.XmlMimeEntityHandler;
import com.wm.ws.soap.util.EnvelopeUtil;

public class SOAPHttpRequestor0 {

public static String SOAP_ENV = "SOAP-ENV:Envelope";
public static String CONTENT_TYPE_VALUE =
"text/xml; charset=UTF-8";

public static void main(java.lang.String[] args)
throws Exception {
Document doc;

// Parses the request XML with the specified charset (utf-8)
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
InputSource input =
new InputSource(new FileReader(args[0]));
doc = factory.newDocumentBuilder().parse(input);
OutputFormat formatter = new OutputFormat(doc, "utf-8",
false);
formatter.setPreserveSpace(true);

// SOAP-ENV:Envelope is added if needed
if (!doc.getDocumentElement().
getTagName().equals(SOAP_ENV)) {
Document env = EnvelopeUtil.createEmptyEnvelope();
doc = EnvelopeUtil.addBodyEntry(env, doc);
}

// Print out the request message
System.out.println("******** Request Message *******");
XMLSerializer serializer =
new XMLSerializer(System.out, formatter);
serializer.serialize(doc);

// Set up HTTP transport
URL url = new URL(args[1]);
HttpURLConnection con =
(HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type",
"text/xml; charset=UTF-8");
con.setRequestProperty("SOAPAction", "\"\"");
con.setDoOutput(true);

// Serialize and send the request message
OutputStream out = con.getOutputStream();
serializer = new XMLSerializer(out, formatter);
serializer.serialize(doc);

// You may get error
if (con.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new Exception("Error in HttpURLConnection: " +
con.getResponseMessage());
}

// Receive response message
InputStream in = con.getInputStream();
input =

XmlMimeEntityHandler.getInputSource(con.getContentType(), in);

Document resp = factory.newDocumentBuilder().parse(input);

System.out.println("\n\n******** Response Message *******");
formatter = new OutputFormat();
formatter.setPreserveSpace(true);
serializer = new XMLSerializer(System.out, formatter);
serializer.serialize(resp);
System.out.println("\n\n******** Succeeded *******");
}
}

Arne Vajhøj

unread,
Jun 5, 2008, 10:11:52 PM6/5/08
to
Denny wrote:
> I am making a sample web service program using WSDL and SOAP under JDK
> 1.4. To make that, I used a source below included in XML and JAVA;
> developing web application 2nd Edition. As you know, Since the two
> classes, OutputFomat and XMLSerializer, had been deprecated, I can't
> use that source. To use that source, How I can modify it?? plz let me
> know the ....

You should not read or write SOAP yourself.

Use a web service toolkit to handle that.

Besides OutputFomat and XMLSerializer are not deprecated
according to:

http://xerces.apache.org/xerces-j/apiDocs/org/apache/xml/serialize/OutputFormat.html
http://xerces.apache.org/xerces-j/apiDocs/org/apache/xml/serialize/XMLSerializer.html

Arne

0 new messages