Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/08/2012, 09:41
rosillos
 
Fecha de Ingreso: marzo-2011
Ubicación: Barcelona
Mensajes: 9
Antigüedad: 13 años, 1 mes
Puntos: 1
Cliente WS-SOAP sobre HTTPS

Buenas a todos,

A ver si alguien puede echarme una ayudita con un WebService con el que no consigo llevarme bien. Os pongo en antecendes:

Necesitamos conectarnos a un WebService del Ministerio de Fomento, el cual está desarrollado sobre un protocolo HTTPS. La solicitud del acceso al servicio se realizan mediante formularios, y para garantizar la confidencialidad se usa comunicación SSL, además de un filtrado por IP y una autenticación mediante un certificado digital.

Mi problema es que no tengo mucha idea de como realizar un cliente de SOAP desde ASP normal, pero he estado buscando por internet y he encontrado información que me ha ayudado a comenzar. He conseguido registrar el certificado con el usuario IWAM, por lo que ya tengo acceso al WebService con conexiones del tipo GET. El problema lo tengo cuando intento realizar un POST de un SOAP en formato XML. El servidor me devuelve error, y aunque he preguntado en el Ministerio, no han podido ayudarme demasiado.

Os pongo mi código para que veáis como hago la llamada y el error que he consegudio capturar:

Código:
        
Set xmlhttp = Server.createobject("MSXML2.ServerXMLHTTP.3.0")
xmlhttp.setOption(3) = "LOCAL_MACHINE\My\ENTIDAD XXXXXXX - CIF XXXXXX - NOMBRE XXXXXXXXX" 
	
xmlhttp.Open "POST", strURL, false
xmlhttp.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8"
xmlhttp.setRequestHeader "action", strSOAPAction
xmlhttp.setRequestHeader "SOAPAction", strSOAPAction

' Aquí devuelve el error: strSOAP contiene el XML
xmlhttp.send strSoap
El error que me devuelve es este:
http://www.w3.org/2005/08/addressing/soap/faults:Sendera:BadContextTokenThe security context token is expired or is not valid. The message was not processed.
Haciendo pruebas, creo que el problema lo tengo a montar el XML. Os lo anoto también:

Código HTML:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ser="http://ServicioBonificacion.Model/2012/ServicioBonificacion">
<soap:Header/>
<soap:Body>
<ser:ServicioBonificacion>
<ser:ServicioBonificacionEntrada>
<ser:DatosSolicitante>
<ser:NumDoc>12345678A</ser:NumDoc>
<ser:TipoDoc>DNI</ser:TipoDoc>
<ser:Nombre>XXXXX</ser:Nombre>
<ser:Apellido1>XXXXXXX</ser:Apellido1>
<ser:Apellido2>XXXXXX</ser:Apellido2>
</ser:DatosSolicitante>
<ser:DatosViaje>
<ser:Origen>XXXXXXXX</ser:Origen>
<ser:Destino>XXXXXXX</ser:Destino>
</ser:DatosViaje>
<ser:ModoTransporte>2</ser:ModoTransporte>
<ser:CodigoBillete>20120726_1512</ser:CodigoBillete>
</ser:ServicioBonificacionEntrada>
<ser:ServicioBonificacionSalida>
<ser:CodigoRespuesta>
</ser:CodigoRespuesta>
<ser:DescripcionRespuesta></ser:DescripcionRespuesta>
<ser:CodigoVerificacion></ser:CodigoVerificacion>
</ser:ServicioBonificacionSalida>
</ser:ServicioBonificacion>
</soap:Body>
</soap:Envelope> 

A ver si alguien me puede echar un cable. Porqué ya no sé por donde seguir!!!

Muchas Gracias a todos de antemano!!

Saludos.