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