Para realizar la llamada construyo este SOAP ENVELOPE:
Código:
Y lo envio mediante este codigo ASP (que por lo que he visto es similar a otros lenguajes, ya que usa MSXML2.ServerXMLHTTP):<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>
Código:
Y siempre obtnego esta respuesta, que no es la que espero: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
Código:
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. <?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>
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:
Espero que podáis ayudarme, gracias <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>