Hey, im trying to build a small application to get stock's information from a web service. Im using Spring WS.
Anyway, i went through the tutorial, but im getting an error:
[Fatal Error] :1:1: Content is not allowed in prolog.
ERROR: 'Content is not allowed in prolog.'
Exception in thread "main" org.springframework.ws.client.WebServiceTransformerException: Transformation error: org.xml.sax.SAXParseException: Content is not allowed in prolog.; nested exception is javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: Content is not allowed in prolog.
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:571)
at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:501)
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:456)
at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:402)
at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:393)
at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:383)
at stockquote.WebServiceClient.simpleSendAndReceive(WebServiceClient.java:34)
at stockquote.WebServiceClient.main(WebServiceClient.java:48)
Caused by: javax.xml.transform.TransformerException: org.xml.sax.SAXParseException: Content is not allowed in prolog.
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(Unknown Source)
at org.springframework.ws.client.core.WebServiceTemplate$5.doWithMessage(WebServiceTemplate.java:458)
at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:534)
... 7 more
Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog.
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(Unknown Source)
... 11 more
And my code:
package stockquote;
import java.io.StringReader;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.springframework.ws.WebServiceMessageFactory;
import org.springframework.ws.client.core.WebServiceTemplate;
import org.springframework.ws.transport.WebServiceMessageSender;
public class WebServiceClient {
private static final String MESSAGE ="POST /stockquote.asmx HTTP/1.1" +
"Host: www.webservicex.net"+
"Content-Type: text/xml; charset=utf-8"+
"Content-Length: length"+
"SOAPAction: \"http://www.webserviceX.NET/GetQuote\""+
"<?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><GetQuote xmlns=\"http://www.webserviceX.NET/\"><symbol>GOOG</symbol></GetQuote></soap:Body>" +
"</soap:Envelope>";
private final static WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
public static void setDefaultUri(String defaultUri) {
webServiceTemplate.setDefaultUri(defaultUri);
}
// send to the configured default URI
public static StreamResult simpleSendAndReceive() {
StreamSource source = new StreamSource(new StringReader(MESSAGE));
StreamResult result = new StreamResult(System.out);
webServiceTemplate.sendSourceAndReceiveToResult(source, result);
return result;
}
public static void main(String args[]){
System.out.println("Starting...");
setDefaultUri("http://www.webservicex.net/stockquote.asmx");
System.out.println(simpleSendAndReceive());
}
}
What could cause the problem?