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

Reply via email to