Page 2 of 2

Re: Asesoria Web Servises

PostPosted: Tue Feb 02, 2016 4:38 pm
by thefull
Buenas

¿ Puedes mostrar los datos que te devuelve php ?
Si lo datos de login son correctos y dices que funciona, miraré de hacerlo funcionar con soapUI.

Pero no entiendo como te puede funcionar el ejemplo que pusistes en PHP, cuando el <login> no está correctamente cerrado.

Re: Asesoria Web Servises

PostPosted: Tue Feb 02, 2016 7:38 pm
by wilsongamboa
Rafa primero gracias por tu interes
aca esta el codigo php que he podido hacer funcionar, con prueba error y ellos los desarrolladores me ayudaron
Code: Select all  Expand view
<?php
 require_once('lib/nusoap.php');

 $wsdlurl =  "http://69.20.52.167/eforce/wsInterfacesEc/InterfacesEc3.php?wsdl";
 $client = new nusoap_client($wsdlurl, 'wsdl');

 $fecha_desde = $argv[1];
 $fecha_hasta = $argv[2];
 $nRegistros  = $argv[3];


 $client->soap_defencoding = 'UTF-8';
 $client->decode_utf8 = true;

 $function = 'getDetallePedido';

 $cad = "<login>
    <servidorBaseDatos>www.ecom.com.co</servidorBaseDatos>
    <nombreBaseDatos>natsilepru</nombreBaseDatos>
    <usuarioBaseDatos>pedidos@natsilepru</usuarioBaseDatos>
    <claveBaseDatos>Ecom2015</claveBaseDatos>
    <fechaInicial>"
.$fecha_desde."</fechaInicial>
    <fechaFinal>"
.$fecha_hasta."</fechaFinal>
    <limiteRegistros>"
.$nRegistros."</limiteRegistros>
    <offset>0</offset>
   <login>"
;

 $params = array('parametros' => $cad);

 $result = $client->call($function,$params);
 $err = $client->getError();

 if ($err != "")
 {
  echo $err;
 }

 $array = json_decode($result);
 $file = fopen("his_pedi.txt","w");
 for ($i=0;$i<count($array);$i++)
 {
  //$codigocliente=$array[$i]->codigocliente;
  //$nombrecliente=$array[$i]->nombrecliente;

  echo $fecha_desde."->".$fecha_hasta.PHP_EOL;
  fwrite($file, $array[$i]->codigopedido.";".
                $array[$i]->codigoproducto.";".
                $array[$i]->cantidad.";".
                $array[$i]->valorunitario.";".
                $array[$i]->tipoproducto.";".
                $array[$i]->porcentajeiva.";".
                $array[$i]->porcentajedescuento.";".
                PHP_EOL );
 }
fclose($file);
?>


Este programa se lo invoca asi
"C:\Program Files\VertrigoServ\Php\php.exe " -- 2015-01-01 2016-31-01 100

los parametros de entrada son las dos fechas y el numero de registro
saludos
Wilson

Re: Asesoria Web Servises

PostPosted: Tue Feb 02, 2016 7:39 pm
by wilsongamboa
Me olvide debes instalar la libreria nusoap bajandola desde sorceforge
saludos
Wilson

Re: Asesoria Web Servises

PostPosted: Tue Feb 02, 2016 7:46 pm
by wilsongamboa
perdon la linea de comandos es

"C:\Program Files\VertrigoServ\Php\php.exe " -f prueba.php -- 2015-01-01 2016-31-01 100
saludos
Wilson

Re: Asesoria Web Servises

PostPosted: Wed Feb 03, 2016 9:11 am
by thefull
Buenos dias

Sorry , pero si con soapUI no funciona, no puedo ver exactamente que ocurre..
Te pego la llamada que se hace desde soapUI, a ver si puedes comentarles DONDE esta error.
Según las especificaciones , que monta automaticamente sopaUI.

Code: Select all  Expand view

<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:getDetallePedido 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>2015-01-01</fechaInicial>
    <fechaFinal>2016-31-01</fechaFinal>
    <limiteRegistros>10</limiteRegistros>
    <offset>0</offset>
   </login></parametros>
      </urn:getDetallePedido>
   </soapenv:Body>
</soapenv:Envelope>
 

Re: Asesoria Web Servises

PostPosted: Wed Feb 03, 2016 10:43 am
by thefull
Buenas

Esto no soluciona la cuestión anterior, ver exactamente que es lo que envia PHP, pero esta solución, otra más, lo que hace es no
depender de terceros, haciendo portable el codigo a otras plataformas, GNU/Linux, Android, etc..
usando simplemente las clases que nos provee Harbour.

Code: Select all  Expand view

#require "hbtip"
Funtion SendSoap()
    LOCAL oHttp, cResponse := ""
    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>]

    oHttp := TIPClientHTTP():new( "http://69.20.52.167/eforce/wsInterfacesEc/InterfacesEc3.php" )
    oHttp:nConnTimeout := 20000

    /* Connect to the HTTP server */
    IF ! oHttp:open( )
       Alert( "Connection error:", oHttp:lastErrorMessage() )
       RETURN ""
    ENDIF

    oHttp:hFields["Content-Type"] := "text/xml;charset=UTF-8"
    oHttp:hFields["Connection:"]   := "Keep-Alive"
    oHttp:hFields["SOAPAction:"]   := "urn:InterfazEc#getMarca"

    if oHttp:post( cXML )
      cResponse   := oHttp:readAll()
    endif  

    oHttp:close()

RETURN cResponse
 

Re: Asesoria Web Servises

PostPosted: Fri Feb 05, 2016 3:32 pm
by wilsongamboa
Rafa muchas gracias por tus esfuerzos
Pues ami solo me ha funcionado con php
nunca he trabajado con php solo he armado algo simple que llama desde lineas de comandos y genera un .txt que leeré desde harbour con eso por el momento me es suficiente, me preocupa en adelante cuando tenga yo que grabar en el WS
saludos y gracias
Wilson
pd: He probado el ejemplo y siempre me devuelve el error servidorBaseDatos Incorrecto