P
Phil Wilkinson
A newb question really that I hope someone can help me with.
I am experimenting with SOAP using a standalone Java application, built
along the lines of this tutorial
http://www-128.ibm.com/developerworks/xml/library/x-jaxmsoap/ but using
Google's API so that I can at least send and get a response from
something. As in the tutorial I have dowloaded and set up Java Web
Services Developer Pack and I am using Eclipse. (Yes I know there are
easier ways like using Google's Java client library but I'm using SAAJ,
as the SOAP service/environment I will eventually be using means that
this is all that I will have available to me).
I can send and receive the SOAP message OK using the Transformer object
and can dump out the response tree. I really need to obtain the
individual elements value only (in this case a correct spelling
suggestion) but when I modify my code to try to access the individual
elements as in the Sun tutorial here
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/SAAJ3.html I get an
error message related to the iterator, in particular it seems unable to
access the individual element (see below).
java.util.NoSuchElementException
at
com.sun.xml.messaging.saaj.soap.impl.ElementImpl$3.next(ElementImpl.java:723)
at Request.main(Request.java:56)
Iterator code below:
SOAPBody soapBody = response.getSOAPBody();
System.out.println("\nRESPONSE:\n");
Iterator iterator = soapBody.getChildElements(bodyName);
SOAPBodyElement ReturnedBodyElement =
(SOAPBodyElement)iterator.next();
String returned = ReturnedBodyElement.getValue();
System.out.print("The Response from the server is ");
System.out.println(returned);
Using Transformer object I get this (so I know I can get a response!):
<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<ns1:doSpellingSuggestionResponse xmlns:ns1="urn:GoogleSearch"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<return xsi:type="xsd:string">half</return>
</ns1:doSpellingSuggestionResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Any suggestions as to how I can get the iterator to work so I can
access the returned value would be much appreciated.
I am experimenting with SOAP using a standalone Java application, built
along the lines of this tutorial
http://www-128.ibm.com/developerworks/xml/library/x-jaxmsoap/ but using
Google's API so that I can at least send and get a response from
something. As in the tutorial I have dowloaded and set up Java Web
Services Developer Pack and I am using Eclipse. (Yes I know there are
easier ways like using Google's Java client library but I'm using SAAJ,
as the SOAP service/environment I will eventually be using means that
this is all that I will have available to me).
I can send and receive the SOAP message OK using the Transformer object
and can dump out the response tree. I really need to obtain the
individual elements value only (in this case a correct spelling
suggestion) but when I modify my code to try to access the individual
elements as in the Sun tutorial here
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/SAAJ3.html I get an
error message related to the iterator, in particular it seems unable to
access the individual element (see below).
java.util.NoSuchElementException
at
com.sun.xml.messaging.saaj.soap.impl.ElementImpl$3.next(ElementImpl.java:723)
at Request.main(Request.java:56)
Iterator code below:
SOAPBody soapBody = response.getSOAPBody();
System.out.println("\nRESPONSE:\n");
Iterator iterator = soapBody.getChildElements(bodyName);
SOAPBodyElement ReturnedBodyElement =
(SOAPBodyElement)iterator.next();
String returned = ReturnedBodyElement.getValue();
System.out.print("The Response from the server is ");
System.out.println(returned);
Using Transformer object I get this (so I know I can get a response!):
<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<ns1:doSpellingSuggestionResponse xmlns:ns1="urn:GoogleSearch"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<return xsi:type="xsd:string">half</return>
</ns1:doSpellingSuggestionResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Any suggestions as to how I can get the iterator to work so I can
access the returned value would be much appreciated.