Buenas Wilson
Te dejo 2 implementaciones , una con SOAPClient, no lo he podido probar porque no me funciona SOAP en mi W7 64 y otro usando peticion directo por http;
Vesion SoapClient, no probado.
- Code: Select all Expand view RUN
/***************************************************************************/
function testWilson()
Local cValue := ""
Local oSoapClient
Local lOk
Local cDominio_WebServices := "http://69.20.52.167/eforce/wsInterfacesEc/InterfacesEc3.php?wsdl"
Local cad := [<login> ]+;
[ <servidorBaseDatos>www.ecom.com.co</servidorBaseDatos>]+;
[ <nombreBaseDatos>natsilepru</nombreBaseDatos>]+;
[ <usuarioBaseDatos>pedidos@natsilepru</usuarioBaseDatos>]+;
[ <claveBaseDatos>Ecom2015</claveBaseDatos>]+;
[ <fechaInicial>2016-01-01</fechaInicial> ]+;
[ <fechaFinal>2016-01-30</fechaFinal>]+;
[ <limiteRegistros>10</limiteRegistros>]+;
[ <offset>0</offset>]+;
[ </login> ]
lOk := .T.
oSoapClient := NIL
// Vamos a intentar conectarnos a SOAP30 y si no SOAP
try
// oSoapClient := CreateObject( "MSSOAP.SoapClient30" ) // Conecta a SOAP 3.0
oSoapClient := CreateObject( "MSSOAP.SoapConector30" ) // Conecta a SOAP 3.0
catch // Si falla, conecta a SOAP
try
oSoapClient := CreateObject( "MSSOAP.SoapClient" )
catch
cValue := "No esta disponible SOAPCLIENT"
Alert( cValue )
lOk := .F.
end
end
if lOk
try
alert( "msSoapInit")
oSoapClient:msSoapInit( cDominio_WebServices )
alert( "Iniciado")
try
cValue := oSoapClient:GetMarca( cad )
catch
cValue := oSOAPClient:faultString + Hb_OsNewLine() + oSOAPClient:detail
lOk := .F.
end
catch
cValue := "Conexion:"+ oSOAPClient:faultString + Hb_OsNewLine() + oSOAPClient:detail
lOk := .F.
end
endif
Alert( cValue )
oSoapClient := NIL
hb_gcall( .T. )
return cValue
Por POST
- Code: Select all Expand view RUN
FUNCTION testWilson_2()
Local oHttp
Local cDominio_WebServices := "http://69.20.52.167/eforce/wsInterfacesEc/InterfacesEc3.php"
Local cXml := [<?xml version="1.0" encoding="UTF-8"?> ]+;
[<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:InterfazEc">]+;
[ <soapenv:Header/>]+;
[ <soapenv:Body>]+;
[ <urn:getMarca soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">]+;
[ <parametros xsi:type="xsd:string"><login>]+;
[ <servidorBaseDatos>www.ecom.com.co</servidorBaseDatos>]+;
[ <nombreBaseDatos>natsilepru</nombreBaseDatos>]+;
[ <usuarioBaseDatos>pedidos@natsilepru</usuarioBaseDatos>]+;
[ <claveBaseDatos>Ecom2015</claveBaseDatos>]+;
[ <fechaInicial>2016-01-01</fechaInicial> ]+;
[ <fechaFinal>2016-01-30</fechaFinal>]+;
[ <limiteRegistros>10</limiteRegistros>]+;
[ <offset>0</offset>]+;
[ </login></parametros>]+;
[ </urn:getMarca>]+;
[ </soapenv:Body>]+;
[ </soapenv:Envelope>]
try
oHttp := CreateObject( "MSXML2.XMLHTTP" )
catch e
? "Error de creacion"
end
oHttp:Open( "POST", cDominio_WebServices, .F. )
ohttp:SetRequestHeader("Content-Type" ,"text/xml;charset=UTF-8" )
ohttp:SetRequestHeader( "SOAPAction" , "urn:InterfazEc#getMarca" )
oHttp:SetRequestHeader( "Connection:", "Keep-Alive" )
oHttp:SetRequestHeader( "Content-length: ", Str( len( cXml ) ) )
hFile := FCreate( "entrada.xml" )
If hFile = -1
MsgStop( "No se pudo abrir el fichero" + "entrada.xml" )
return nil
endif
Fwrite( hFile, cXMl )
fClose( hFile )
oHttp:Send( cXml )
alert( oHttp:responseText )
hFile := FCreate( "salida.xml" )
If hFile = -1
MsgStop( "No se pudo abrir el fichero" + "salida.xml" )
return nil
endif
Fwrite( hFile, oHttp:responseText )
fClose( hFile )
RETURN NIL
Devuelve lo mismo que SOAPui, por lo tanto, todo correcto
Espero que esto te ayude en el camino
Saludos Cordiales
Saludos Cordiales