Foros del Web » Programación para mayores de 30 ;) » Programación General »

Llamar servicio web

Estas en el tema de Llamar servicio web en el foro de Programación General en Foros del Web. Hola, tengo que realizar una llamada a un servicio web WSDL con estilo en RPC/encoded, definido como explico al final del post. Para realizar la ...
  #1 (permalink)  
Antiguo 21/07/2008, 10:53
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 5 meses
Puntos: 9
Llamar servicio web

Hola, tengo que realizar una llamada a un servicio web WSDL con estilo en RPC/encoded, definido como explico al final del post.

Para realizar la llamada construyo este SOAP ENVELOPE:

Código:
<soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <soap:body>
        <wsdl:registrarXml>
            <wsdl:registrarXmlRequest xsi:type="xsd:string">PEVudmlvIElkPSJBR1BEIj4 BLA BLA BLA W52aW8+</wsdl:registrarXmlRequest>
        </wsdl:registrarXml>
    </soap:body>
</soap:envelope>
Y lo envio mediante este codigo ASP (que por lo que he visto es similar a otros lenguajes, ya que usa MSXML2.ServerXMLHTTP):

Código:
        strURL = "https://www.url_proveedor.es:443/proveedor/axis/SolicitudService?wsdl"

        Set oSOAP = Server.CreateObject("MSXML2.ServerXMLHTTP")

        oSOAP.Open "POST", strURL, False

        oSOAP.Send(xmlSOAP)
        
        Response.write oSOAP.ResponseText
Y siempre obtnego esta respuesta, que no es la que espero:

Código:
<?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> <soapenv:Fault> 
<faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode> 
<faultstring>no SOAPAction header!</faultstring> 
<detail/> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope>
Espero que podais ayudarme a detectar el error, soy novato en todo esto de WSDL y SOAP y la verdad, ya se me escapa la documentación que leo acerca de ello.

No se si mi error está en la forma de realizar la llamada o en la construcción del SOAP ENVELOPE, tampoco termino de entender muy bien lo de los namespaces y si debo tener en cuenta los namespaces de la definición del servicio web en la construcción del SOAP ENVELOPE.

La definción del servicio WSDL es la siguiente:

Código:
<wsdl:definitions targetNamespace="https://www.url_proveedor.es/proveedor/axis/SolicitudService">
<wsdl:message name="registrarXmlRequest">
 <wsdl:part name="xml" type="xsd:string"/>
 </wsdl:message>
<wsdl:message name="registrarXmlResponse">
 <wsdl:part name="registrarXmlReturn" type="xsd:string"/>
 </wsdl:message>
<wsdl:portType name="JaxRpcSolicitudService">
<wsdl:operation name="registrarXml" parameterOrder="xml">
 <wsdl:input message="impl:registrarXmlRequest" name="registrarXmlRequest"/>
 <wsdl:output message="impl:registrarXmlResponse" name="registrarXmlResponse"/>
 </wsdl:operation>
 </wsdl:portType>
<wsdl:binding name="SolicitudServiceSoapBinding" type="impl:JaxRpcSolicitudService">
 <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="registrarXml">
 <wsdlsoap:operation soapAction=""/>
<wsdl:input name="registrarXmlRequest">
 <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://servicioweb.agencia.com" use="encoded"/>
 </wsdl:input>
<wsdl:output name="registrarXmlResponse">
 <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://www.url_proveedor.es/proveedor/axis/SolicitudService" use="encoded"/>
 </wsdl:output>
 </wsdl:operation>
 </wsdl:binding>
<wsdl:service name="JaxRpcSolicitudServiceService">
<wsdl:port binding="impl:SolicitudServiceSoapBinding" name="SolicitudService">
 <wsdlsoap:address location="https://www.url_proveedor.es/proveedor/axis/SolicitudService"/>
 </wsdl:port>
 </wsdl:service>
 </wsdl:definitions>
Espero que podáis ayudarme, gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:33.