Page 1 of 2
Asesoria Web Servises
Posted: Tue Jan 26, 2016 11:06 pm
by wilsongamboa
Necesito comunicarme con un programa llamado ecom de la empresa Nestle
Alguien tiene alguna idea de como hacerlo
Los desarrolladores me pasaron un ejemplo en php
Code: Select all
<?php
require_once('lib/nusoap.php');
$wsdlurl = "http://69.20.52.167/eforce/wsInterfacesEc/InterfacesEc3.php?wsdl";
$client = new nusoap_client($wsdlurl, 'wsdl');
$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = true;
$function = 'getMarca';
$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>";
$params = array('parametros' => $cad);
$result = $client->call($function,$params);
$err = $client->getError();
if ($err != ""){
echo $err;
}
for ($i=0;$i<sizeof($result);$i++){
$codigomarca=$result[$i]['codigomarca'];
$nombremarca=$result[$i]['nombremarca'];
//aquí los insert en la bd
echo "Codigo => ".$codigomarca." Nombre => ".$nombremarca."<br>";
}
?>
Podria alguien caritativo darme una mano o asesorarme con pago económico claro
saludos
Wilson
Re: Asesoria Web Servises
Posted: Wed Jan 27, 2016 10:59 am
by Antonio Linares
Wilson,
Aqui tienes un ejemplo de como usar un web service desarrollado por Rafa Carmona con Harbour:
http://forums.fivetechsupport.com/viewt ... 1&p=184517
Re: Asesoria Web Servises
Posted: Wed Jan 27, 2016 11:30 am
by wilsongamboa
Master Antonio
muchas gracias
ya tengo donde mirar
saludos cordiales
Wilson
Re: Asesoria Web Servises
Posted: Wed Jan 27, 2016 11:14 pm
by wilsongamboa
estimado Antonio, con este codigo parece que ya se conecta pero me regresan los metodos como algo informativo, COMO ? le paso un parametro indicando el metodo que deseo me ejecute por ejemplo el metodo getClientes
Code: Select all
PROCEDURE test_htip()
LOCAL oHttp, hQuery, cResponse
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>"
hQUery := { => }
hb_HCaseMatch( hQuery, .F. )
oHttp := TIPClientHTTP():New( "http://69.20.52.167/eforce/wsInterfacesEc/InterfacesEc3.php?wsdl", .T. )
//hQuery[ "nombre" ] := "THefull The BEST!"
//cad = [<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">]
hQuery[ "parametros" ] := cad
//hQuery[ "operation name" ] := 'getClientes'
IF ! oHttp:open()
? "Error: oHttp:open(): " + oHttp:lastErrorMessage()
RETURN
ENDIF
IF ! oHttp:post( hQuery )
? "Error: oHttp:post(): " + oHttp:lastErrorMessage()
ENDIF
cResponse := oHttp:readAll()
oHttp:close()
hb_memowrit( 'log.log', cResponse )
Alert( cResponse )
RETURN
Gracias por escucharme
saludos
Wilson
Re: Asesoria Web Servises
Posted: Thu Jan 28, 2016 9:04 am
by Antonio Linares
Wilson,
Envíale un email a Rafa Carmona que seguro él sabrá ayudarte
Re: Asesoria Web Servises
Posted: Thu Jan 28, 2016 12:05 pm
by thefull
Buenas
Hay muchos ejemplos en este foro que seguro te pondran ayudar.
Mi consejo es que si estas muy perdido, uses SOAPCLIENT de M$, ojo que no todos los webservices los soporta, alguno raro me he encontrado.
Por ejemplo,
http://forums.fivetechsupport.com/viewt ... f5#p179416
Saludos Cordiales
Re: Asesoria Web Servises
Posted: Thu Jan 28, 2016 6:16 pm
by wilsongamboa
Maestro The Full
gracias por la info
podrias tu asesorarme?
por el momento solo debo leer unos pedidos y traerlos del web services
saludos
Wilson
Re: Asesoria Web Servises
Posted: Thu Jan 28, 2016 9:11 pm
by thefull
Una de las herramientas imprescindible de usar para los ws es SoapUI, donde puedes ver por debajo de todo lo
que ocurre en la comunicación, lo que te da una idea de lo que va ocurriendo y como tienes que implementar muchas de las
llamadas.
También puedes mirar si es posible usar la libreria CURL , la cual esta implementada en Harbour.
Estoy casi convencido que lo que buscas hacer, alguien en PHP lo ha realizado. O VisualBasic , seguramente te servirá.
Si tengo un poco de tiempo, hacer si te monto un ejemplo simple con esa wsd.
Re: Asesoria Web Servises
Posted: Thu Jan 28, 2016 9:43 pm
by wilsongamboa
Gracias Master te lo agradecere mucho
cuesta engancharse a estos temas
saludos cordiales
Wilson
Re: Asesoria Web Servises
Posted: Tue Feb 02, 2016 9:18 am
by thefull
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
/***************************************************************************/
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
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
Re: Asesoria Web Servises
Posted: Tue Feb 02, 2016 9:44 am
by Antonio Linares
gracias Rafa
Re: Asesoria Web Servises
Posted: Tue Feb 02, 2016 10:14 am
by wilsongamboa
Rafa muchisimas gracias
ya lo voy a probar
saludos cordiales
Wilson
pd: tengo problemas con CHrome y estos foros, ya no me deja ingresar, estoy ingresando por Internet Explorer
Re: Asesoria Web Servises
Posted: Tue Feb 02, 2016 1:20 pm
by cnavarro
Limpia las cookies del sitio, a mi me paso lo mismo
Re: Asesoria Web Servises
Posted: Tue Feb 02, 2016 4:07 pm
by wilsongamboa
Cristobal
muchas gracias
eso era
saludos
Wilson
Re: Asesoria Web Servises
Posted: Tue Feb 02, 2016 4:23 pm
by wilsongamboa
Continuando
Probando con el metodo Post ya que el soap me da error
me sale
Code: Select all
<?xml version="1.0"
encoding="ISO-8859-1"?><SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><n
s1:getMarcaResponse xmlns:ns1="urn:InterfazEc"><return
xsi:type="xsd:string">servidorBaseDatos Incorrecto
</return></ns1:getMarcaResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>
sin embargo con el programa php y los mismos parametros si me sale bien
sigo investigando, y Rafa si pudieras escribir algo generico de coneccion con web services, le pones un precio y creo que saldremos muchos adelante, estos trabajos con complementarios para nuestros sistemas, si logro algo pues lo estare posteando
gracias por su ayuda