'------------------------------------------------------------------------------
' Cliente VB6 del servicio Web conversor de ºC a ºF (28/Jun/03)
'
' Basado en un ejemplo del libro: Introducing .NET de David S. Platt
' En esta versión no se usa el control Inet (Internet Trnsfer Control)
'
' ©Guillermo 'guille' Som, 2003
'
' En un formulario incluir:
' 4 textbox con los nombres: txtURL, txtC, txtF y text1 (este ultimo multiline)
' 2 commandButton con los nombres: cmdC2F y cmdF2C
'
'------------------------------------------------------------------------------
Option Explicit
Private Enum tipoConversion
deCaF
deFaC
End Enum
Private tipo As tipoConversion
' Estas definiciones están tomadas de lo mostrado en el explorador
' al seleccionar cada una de las funciones del servicio Web
Private Const cSOAPCaF = _
"<?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>" & _
"<CaF xmlns=""http://elGuille/WebServices"">" & _
"<valor>1</valor>" & _
"</CaF>" & _
"</soap:Body>" & _
"</soap:Envelope>"
Private Const cSOAPFaC = _
"<?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>" & _
"<FaC xmlns=""http://elGuille/WebServices"">" & _
"<valor>1</valor>" & _
"</FaC>" & _
"</soap:Body>" & _
"</soap:Envelope>"
Private Sub cmdC2F_Click()
tipo = deCaF
'
'Dim parser As DOMDocument
Dim parser As MSXML2.DOMDocument30
'Set parser = New DOMDocument
Set parser = New MSXML2.DOMDocument30
' cargar el código SOAP para CaF
parser.loadXML cSOAPCaF
'
' Indicar el parámetro a enviar
parser.selectSingleNode("/soap:Envelope/soap:Body/CaF/valor").Text = txtC.Text
'
' Mostrar el código XML enviado al servicio Web
Text1.Text = parser.xml
'
' Usar el control Inet para realizar la operación HTTP POST
'Inet1.Execute txtURL.Text, "POST", parser.xml, "Content-Type: text/xml; charset=utf-8" & vbCrLf & "SOAPAction: http://elGuille/WebServices/CaF"
'
enviarComando parser.xml, "http://elGuille/WebServices/CaF"
'
' enviarComando
'
End Sub
Private Sub cmdF2C_Click()
tipo = deFaC
'
Dim parser As DOMDocument
Set parser = New DOMDocument
' cargar el código SOAP para FaC
parser.loadXML cSOAPFaC
'
' Indicar el parámetro a enviar
parser.selectSingleNode("/soap:Envelope/soap:Body/FaC/valor").Text = txtF.Text
'
' Mostrar el código XML enviado al servicio Web
Text1.Text = parser.xml
'
' Usar el control Inet para realizar la operación HTTP POST
'Inet1.Execute txtURL.Text, "POST", parser.xml, "Content-Type: text/xml; charset=utf-8" & vbCrLf & "SOAPAction: http://elGuille/WebServices/FaC"
'
enviarComando parser.xml, "http://elGuille/WebServices/FaC"
'
' enviarComando
'
End Sub
'Private Sub enviarComando()
' ' Enviar el comando al servicio Web
' '
' Dim parser As DOMDocument
' Set parser = New DOMDocument
' '
' If tipo = deCaF Then
' ' cargar el código SOAP para CaF
' parser.loadXML cSOAPCaF
' Else
' ' cargar el código SOAP para FaC
' parser.loadXML cSOAPFaC
' End If
' '
' ' Indicar el parámetro a enviar
' If tipo = deCaF Then
' parser.selectSingleNode("/soap:Envelope/soap:Body/CaF/valor").Text = txtC.Text
' Else
' parser.selectSingleNode("/soap:Envelope/soap:Body/FaC/valor").Text = txtF.Text
' End If
' '
' ' Mostrar el código XML enviado al servicio Web
' Text1.Text = parser.xml
' '
' '
' ' usar XMLHTTPRequest para enviar la información al servicio Web
' Dim oHttReq As XMLHTTPRequest
' Set oHttReq = New XMLHTTPRequest
' '
' ' Enviar el comando de forma síncrona (se espera a que se reciba la respuesta)
' oHttReq.open "POST", txtURL.Text, False
' ' las cabeceras a enviar al servicio Web
' ' (no incluir los dos puntos en el nombre de la cabecera)
' oHttReq.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
' If tipo = deCaF Then
' oHttReq.setRequestHeader "SOAPAction", "http://elGuille/WebServices/CaF"
' Else
' oHttReq.setRequestHeader "SOAPAction", "http://elGuille/WebServices/FaC"
' End If
' ' enviar el comando
' oHttReq.send parser.xml
' '
' ' este será el texto recibido del servicio Web
' procesarRespuesta oHttReq.responseText
' '
'End Sub
Private Sub enviarComando(ByVal sXml As String, ByVal sSoapAction As String)
' Enviar el comando al servicio Web
'
' usar XMLHTTPRequest para enviar la información al servicio Web
'Dim oHttReq As XMLHTTPRequest
Dim oHttReq As MSXML2.XMLHTTP30
'Set oHttReq = New XMLHTTPRequest
Set oHttReq = New MSXML2.XMLHTTP30
'
' Enviar el comando de forma síncrona (se espera a que se reciba la respuesta)
oHttReq.open "POST", txtURL.Text, False
' las cabeceras a enviar al servicio Web
' (no incluir los dos puntos en el nombre de la cabecera)
oHttReq.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
oHttReq.setRequestHeader "SOAPAction", sSoapAction
' enviar el comando
oHttReq.send sXml
'
' este será el texto recibido del servicio Web
procesarRespuesta oHttReq.responseText
'
End Sub
Private Sub procesarRespuesta(ByVal s As String)
' procesar la respuesta recibida del servicio Web
Text1.Text = s
'
' Poner los datos en el analizador de XML
Dim parser As DOMDocument
Set parser = New DOMDocument
parser.loadXML s
'
On Error Resume Next
'
If tipo = deCaF Then
txtF.Text = "Error"
txtF.Text = parser.selectSingleNode("/soap:Envelope/soap:Body/CaFResponse/CaFResult").Text
Else
txtC.Text = "Error"
txtC.Text = parser.selectSingleNode("/soap:Envelope/soap:Body/FaCResponse/FaCResult").Text
End If
'
If Err.Number > 0 Then
Text1.SetFocus
End If
End Sub
Private Sub Form_Load()
Text1.Text = "Cliente VB6" & vbCrLf & "del Servicio Web Conversor de ºC a ºF"
txtURL.Text = "http://www.elguille.info/Net/WebServices/conversor.asmx"
End Sub