Asesoria Web Servises

User avatar
thefull
Posts: 720
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona
Contact:

Re: Asesoria Web Servises

Post 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.
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
User avatar
wilsongamboa
Posts: 439
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador

Re: Asesoria Web Servises

Post 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

<?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
User avatar
wilsongamboa
Posts: 439
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador

Re: Asesoria Web Servises

Post by wilsongamboa »

Me olvide debes instalar la libreria nusoap bajandola desde sorceforge
saludos
Wilson
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
User avatar
wilsongamboa
Posts: 439
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador

Re: Asesoria Web Servises

Post 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
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
User avatar
thefull
Posts: 720
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona
Contact:

Re: Asesoria Web Servises

Post 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

<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__)
User avatar
thefull
Posts: 720
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona
Contact:

Re: Asesoria Web Servises

Post 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

#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__)
User avatar
wilsongamboa
Posts: 439
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador

Re: Asesoria Web Servises

Post 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
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
Post Reply