FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index Off Topic / Otros temas Asesoria Web Servises
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: Asesoria Web Servises
Posted: Tue Feb 02, 2016 04:38 PM

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.

Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: Asesoria Web Servises
Posted: Tue Feb 02, 2016 07:38 PM
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 (fw): Select all Collapse
<?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
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: Asesoria Web Servises
Posted: Tue Feb 02, 2016 07:39 PM

Me olvide debes instalar la libreria nusoap bajandola desde sorceforge
saludos
Wilson

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: Asesoria Web Servises
Posted: Tue Feb 02, 2016 07:46 PM

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

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: Asesoria Web Servises
Posted: Wed Feb 03, 2016 09:11 AM
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 (fw): Select all Collapse
<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>
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 731
Joined: Fri Oct 07, 2005 07:42 AM
Re: Asesoria Web Servises
Posted: Wed Feb 03, 2016 10:43 AM
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 (fw): Select all Collapse
#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
Saludos

Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM
Re: Asesoria Web Servises
Posted: Fri Feb 05, 2016 03:32 PM

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

Wilson 'W' Gamboa A
Wilson.josenet@gmail.com

Continue the discussion