Al fin, lo he conseguido, como casi siempre (por no decir siempre) la solucion era muchisimo más facil de lo que parecía, si os fijais, las diferencias con el primer código son minimas, pero es la diferencia entre funcionar y no
Comparto el código con vosotros por si algun dia alguien necesitase este ejemplo:
Código:
Dim XMLstring,xmlhttp
Response.Buffer = True
Set xmlhttp = Server.CreateObject("Msxml2.ServerXMLHTTP")
' Forma la cadena de petición SOAP
XMLstring = "<?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>" & _
"<" & Soap_Action & " xmlns=""" & Soap_Namespace & """>" & _
"<campo>" & valor& "</campo>" & _
"</" & Soap_Action & ">" & _
"</soap:Body>" & _
"</soap:Envelope>"
' Añade la información de la cabecera
xmlhttp.Open "POST", "http://" & Soap_Server & Soap_Path, False
xmlhttp.setRequestHeader "Man", "POST " & Soap_Path & " HTTP/1.1"
xmlhttp.setRequestHeader "Host", Soap_Server
xmlhttp.setRequestHeader "Content-Type", "application/zip"
xmlhttp.setRequestHeader "SOAPAction", Soap_Namespace & Soap_Action
xmlhttp.send(XMLstring)
' Añade una cabecera para darle un nombre:
Response.AddHeader "Content-Disposition","attachment;filename=File.zip"
' Especifica el tipo de contenido para decirle al explorador qué hacer:
Response.ContentType = "application/zip"
' Manda los datos al explorador
Response.BinaryWrite xmlhttp.responseBody
Basicamente, es que en el anterior código por un despiste le indicaba en la cabecera que la respuesta era texto, por lo tanto me lo mostraba como texto en el explorador, al indicarle bien el tipo de fichero que devolvia y enviar la respuesta al explorador, éste ultimo lo interpretó perfectamente y abrió el dialogo de descarga.
Muchisimas gracias por las respuestas!
Hasta pronto