Consumindo WebService SOAP a partir de javascript

  • Autor Autor lokinkc
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
L

lokinkc

Curioso
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Buenas, estoy intentando consumir un Webservice hecho en java desde un cliente JavaScript.
Consigo, desde el cliente, acceder al jsp del webservice, pero no a ninguno de sus metodos.
No he hecho esto nunca, y no se si lo estoy haciendo bien o si se puede hacer siquiera lo que yo quiero.

Dejo aquí mi código para ver si alguien me puede ayudar.


Codigo:

Inserir CODE, HTML ou PHP:
<html>

<script type="text/javascript">
	
    function run(){

        var objXMLHttpRequest = new XMLHttpRequest();
        objXMLHttpRequest.open("GET", "http://localhost:8080/CrunchifyWS/services/CrunchifyHelloWorld?wdsl/getText", true);
        objXMLHttpRequest.onreadystatechange = function () {
       	//alert(objXMLHttpRequest.readyState+"   "+ objXMLHttpRequest.status);
        if (objXMLHttpRequest.readyState == 4 && objXMLHttpRequest.status == 200) {
            result = objXMLHttpRequest.responseXML;
            alert(objXMLHttpRequest.responseText);
          }
        }
        objXMLHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");

        var packet = '<?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><PieTable xmlns="[getText(Namespace = "http://service.web.com.crunchify")]"><table>Pie</table></PieTable></soap:Body></soap:Envelope>';

        objXMLHttpRequest.send(packet);
        // Add mentioned below code only if your application calls webservice synchronously. Otherwise use "onreadystatechange" process response.
        response = objXMLHttpRequest.responseXML;
        alert(objXMLHttpRequest.responseText+ "  "+ response);
    }
</script>

<head>
</head>
<body>
	<button  onclick="run()">Dale!</button>
</body>
</html>
Muchas gracias de antemano. Estoy seguro de que lo estoy haciendo mal. Pero no se muy bien por qué.
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Si te refieres a ponerlo en el navegador, el resultado es exactamente el mismo que si buscamos http://localhost:8080/CrunchifyWS/services/CrunchifyHelloWorld?wdsl.

El webService lo he probado desde el WSClient que genera Eclipse, y funcionan los métodos. Para asegurarnos de que todo funcional correctamente.
Creo que el fallo debe estar en la forma en la que realizo la petición.

Realmente nunca antes había trabajado con WebServices, ni mucho menos había intentado crear un cliente SOAP en JS.

Estoy muy muy perdido.😕

- - - Actualizado - - -

Este es el wdsl del webservice.
Inserir CODE, HTML ou PHP:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://service.web.com.crunchify" xmlns:intf="http://service.web.com.crunchify" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://service.web.com.crunchify">
<!--
WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)
-->
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://service.web.com.crunchify">
<element name="addValue">
<complexType>
<sequence>
<element name="value" type="xsd:float"/>
</sequence>
</complexType>
</element>
<element name="addValueResponse">
<complexType>
<sequence>
<element name="addValueReturn" type="xsd:float"/>
</sequence>
</complexType>
</element>
<element name="subtractValue">
<complexType>
<sequence>
<element name="value" type="xsd:float"/>
</sequence>
</complexType>
</element>
<element name="subtractValueResponse">
<complexType>
<sequence>
<element name="subtractValueReturn" type="xsd:float"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="subtractValueRequest">
<wsdl:part element="impl:subtractValue" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:message name="subtractValueResponse">
<wsdl:part element="impl:subtractValueResponse" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:message name="addValueRequest">
<wsdl:part element="impl:addValue" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:message name="addValueResponse">
<wsdl:part element="impl:addValueResponse" name="parameters"></wsdl:part>
</wsdl:message>
<wsdl:portType name="CrunchifyHelloWorld">
<wsdl:operation name="addValue">
<wsdl:input message="impl:addValueRequest" name="addValueRequest"></wsdl:input>
<wsdl:output message="impl:addValueResponse" name="addValueResponse"></wsdl:output>
</wsdl:operation>
<wsdl:operation name="subtractValue">
<wsdl:input message="impl:subtractValueRequest" name="subtractValueRequest"></wsdl:input>
<wsdl:output message="impl:subtractValueResponse" name="subtractValueResponse"></wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CrunchifyHelloWorldSoapBinding" type="impl:CrunchifyHelloWorld">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="addValue">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="addValueRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="addValueResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="subtractValue">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="subtractValueRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="subtractValueResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CrunchifyHelloWorldService">
<wsdl:port binding="impl:CrunchifyHelloWorldSoapBinding" name="CrunchifyHelloWorld">
<wsdlsoap:address location="http://localhost:8080/CrunchifyWS/services/CrunchifyHelloWorld"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

Estoy seguro de que el error está en la forma de hacer la llamada desde el cliente. Ayuda por favor
 
Voltar
Topo