So, is there any way to easily get both document's specification to store them and use them for later invocation?.
I've been surfing a lot and found anything. Any reference would be very helpful, as I'm using this at university's project for a course, where the time is finite :-P . 2007/10/30, Jeff Greif <[EMAIL PROTECTED]>: > > My guess is the problem is in using the WRAPPED_STR style. It's > convenient for getting your input string wrapped up as the desired > soap:body child element, but it causes the response to be unwrapped, > and, as a single object is returned, rather than an array, you're > losing most of the response. If you use a straight document/literal > style/use and do your best to forbid automatic wrapping and > unwrapping,you have to do a little more work on input but you'll have > the full output. > > I recall having difficulty at one time getting axis 1.4 to stop trying > to wrap and unwrap. > > If you're going to be using DII for arbitrary WSDLs, you probably > would not be able to use wrapping and unwrapping anyway -- not all > doc/lit services can have their responses unwrapped. You should just > work with the full documents required for input and output. > > Jeff > > > > On 10/30/07, Ernesto Pin <[EMAIL PROTECTED]> wrote: > > Hi!. I'm trying to develop a "pure" dynamic client to invoke WS's. The > idea > > behind this, is that I can't generate any classes to invoke the > > web-services. Particularly, I can't use specific classes for return > types. I > > thought about using org.w3c.dom.Document as return type, but I'm not > being > > successful. The problem I'have, is that, when I return from service's > > invocation, the resultant document only contains the first node of the > > response. > > > > I would be very grateful if someone could help me to obtain the whole > > document. > > > > Here is my stuff. As you will see, the "conversation" with the service > is > > well-made, so I think that my problem is when the result is read. I > don't > > know how to read response by myself, or how, where and what configure to > > read it well. > > > > > ------------------------------------------------------------------------------------- > > wsdl: http://www.webservicex.net/geoipservice.asmx?wsdl > > > ------------------------------------------------------------------------------------- > > Client code (running inside a servlet hosted in jBoss 4.2.1) > > > > package concrete; > > > > import java.io.IOException; > > import java.io.PrintWriter; > > import java.net.MalformedURLException; > > import java.net.URL; > > > > import javax.servlet.http.HttpServletRequest; > > import javax.servlet.http.HttpServletResponse; > > import javax.xml.namespace.QName; > > import javax.xml.rpc.ServiceException; > > > > import org.apache.axis.client.Call ; > > import org.apache.axis.client.Service; > > import org.apache.axis.client.ServiceFactory; > > import org.apache.axis.constants.Style; > > import org.apache.axis.constants.Use; > > import > > org.apache.axis.encoding.ser.DocumentDeserializerFactory ; > > import > > org.apache.axis.encoding.ser.DocumentSerializerFactory; > > import org.apache.axis.soap.SOAPConstants; > > import org.w3c.dom.Document; > > import org.w3c.dom.Node; > > import org.w3c.dom.NodeList; > > > > import actions.IAction ; > > > > public class TestParams implements IAction { > > > > @Override > > public void execute(HttpServletRequest req, HttpServletResponse > resp) { > > try { > > QName name = new QName(" http://www.webservicex.net", > > "GeoIPService"); > > > > Service service = (Service) ServiceFactory > > .newInstance() > > .createService( > > new URL( > > > > "http://webservicex.net/geoipservice.asmx?wsdl"), > > name); > > > > QName port = new QName( name.getNamespaceURI(), > > "GeoIPServiceSoap"); > > QName oper = new QName(name.getNamespaceURI(), "GetGeoIP"); > > > > Call call = (Call) service.createCall(port, oper); > > > > > > call.setTargetEndpointAddress("http://webservicex.net/geoipservice.asmx > "); > > > > call.setEncodingStyle(null); > > call.setProperty(Call.SOAPACTION_USE_PROPERTY , new > > Boolean(true)); > > call.setProperty(Call.SOAPACTION_URI_PROPERTY, > > "http://www.webservicex.net/GetGeoIP"); > > call.setSOAPVersion(SOAPConstants.SOAP11_CONSTANTS); > > call.setOperationUse(Use.LITERAL); > > call.setOperationStyle(Style.WRAPPED_STR); > > > > > > call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR > > , > > Boolean.FALSE); > > > > call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, > > Boolean.FALSE); > > > > call.setReturnType(new QName(name.getNamespaceURI (), > "GeoIP")); > > call.setReturnClass(Document.class); > > > > call.registerTypeMapping(Document.class, > > new QName(name.getNamespaceURI(), "GeoIP"), > > DocumentSerializerFactory.class, > > DocumentDeserializerFactory.class, > > false > > ); > > > > > > setRequestHeaders(call); > > setAttachments(call); > > > > Object[] params = new Object[] { "203.244.123.15" }; > > > > Document doc; > > > > doc = (Document) call.invoke(params); > > > > printDocument(doc, resp.getWriter()); > > > > } catch (MalformedURLException e) { > > e.printStackTrace(); > > } catch (ServiceException e) { > > e.printStackTrace(); > > } catch (IOException e) { > > e.printStackTrace(); > > } catch (Exception e) { > > e.printStackTrace(); > > } > > } > > > > private void printDocument(Document ret, PrintWriter writer) { > > NodeList childNodes = ret.getChildNodes(); > > > > for (int i = 0; i < childNodes.getLength(); i++) { > > printNode(0, childNodes.item(i), writer); > > } > > } > > > > private void printNode(int level, Node node, PrintWriter writer) { > > String pre = ""; > > > > for (int i = 0; i < level; i++) { > > pre += "\t"; > > } > > > > String strNode = String.format("%s%s = %s", pre, > node.getNodeName > > (), > > node.getNodeValue()); > > > > writer.println(strNode); > > > > NodeList childNodes = node.getChildNodes(); > > > > for (int i = 0; i < childNodes.getLength(); i++) { > > printNode(level++, childNodes.item(i), writer); > > } > > > > } > > > > } > > > ------------------------------------------------------------------------------------- > > SOAP request being posted (body tabbed for readability) > > > > POST http://webservicex.net:80/geoipservice.asmx HTTP/1.0 > > Content-Type: text/xml; charset=utf-8 > > Accept: application/soap+xml, application/dime, multipart/related, > text/* > > User-Agent: Axis/1.4 > > Host: webservicex.net > > Cache-Control: no-cache > > Pragma: no-cache > > SOAPAction: "http://www.webservicex.net/GetGeoIP " > > Content-length: 354 > > > > <?xml version="1.0" encoding="UTF-8"?><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> > > <GetGeoIP xmlns="http://www.webservicex.net"> > > <IPAddress> 203.244.123.15</IPAddress> > > </GetGeoIP> > > </soapenv:Body> > > </soapenv:Envelope> > > > -------------------------------------------------------------------------------------- > > SOAP response received (body tabbed for readability) > > > > HTTP/1.0 200 OK > > Date: Tue, 30 Oct 2007 20:05:44 GMT > > Server: Microsoft-IIS/6.0 > > X-Powered-By: ASP.NET > > X-AspNet-Version: 1.1.4322 > > Cache-Control: private, max-age=0 > > Content-Type: text/xml; charset=utf-8 > > Content-length: 524 > > X-Cache: MISS from httpproxy > > Via: 1.0 httpproxy:3128 (squid) > > Proxy-Connection: close > > > > <?xml version=" 1.0" encoding="utf-8"?> > > <soap:Envelope > > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" > > xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" > > xmlns:xsd="http://www.w3.org/2001/XMLSchema"> > > <soap:Body> > > <GetGeoIPResponse xmlns=" http://www.webservicex.net"> > > <GetGeoIPResult> > > <ReturnCode>1</ReturnCode> > > <IP> 203.244.123.15</IP> > > <ReturnCodeDetails>Record Found</ReturnCodeDetails> > > <CountryName>KOREA REPUBLIC OF</CountryName> > > <CountryCode>KR</CountryCode> > > </GetGeoIPResult> > > </GetGeoIPResponse> > > </soap:Body> > > </soap:Envelope> > > --------------------------------------------------------- > > What printDocument() method shows: > > ns1:ReturnCode = null > > #text = 1 > > > > > > --------------------------------------------------------- > > > > Thanks, > > Ernesto Pin > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Saludos, Ernesto Pin
