Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/07/2008, 05:32
Avatar de PosProdukcion
PosProdukcion
 
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 20 años
Puntos: 9
Invocar función dentro de un servicio web desde ASP

Hola, estoy intentando implementar una llamada a un servicio web (definido con WSDL) desde un script ASP.

Como parámetro tengo un fichero XML (que ya tengo formado) y como respuesta otro XML, ahora ignoro de qué manera hacer la llamada concreta al servicio y a la función deseada dentro de este y como pasar el parámetro.

También ignoro según la definción del WSDL si necesito el SOAP o me basta con MSXML2.XMLHTTP (según esto)

He leido acerca de SOAP y WSDL y bueno, algo he logrado enterarme pero ahora ignoro de que manera realizar la llamada desde ASP...

La definición del WSDL es esta:

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>
O sea, quiero invocar un servicio:

https://www.url_proveedor.es:443/pro...licitudService

Dentro de este la función registrarXml con los parámetros input registrarXmlRequest y output registrarXmlResponse, formateados en Base 64.

¿Como se ajusta esto al siguiente código? ¿Como se si es GET o POST o ninguna de ellas (el WSDL define un binding style="rpc")? Este código me da una URL de un servicio, pero como invoco una función dentro de este servicio?:

Código:

dim objXML
set objXML = CreateObject("MSXML2.ServerXMLHTTP")
objXML.Open "GET", strURL, False 'SUPONGO QUE AQUI INVOCO EL SERVICIO ¿COMO INVOCO LA FUNCIÓN?
objXML.Send
strQuote = objXML.ResponseText 'SUPONGO QUE AUI CAPTURO LA RESPUESTA
set objXML = nothing
Gracias