enviar POST y obtener Json

Post Reply
User avatar
VeRCE
Posts: 219
Joined: Fri Nov 04, 2005 2:34 pm
Location: Mexico D.F.
Contact:

enviar POST y obtener Json

Post by VeRCE »

Hay forma de enviar una liga con método POST y obtener la salida en JSON desde FiveWin ?
o bien... hay forma de emular eso de alguna manera ?

Mi punto es el siguiente, necesito enviar desde mi aplicación de FiveWin, los datos de una ventana de captura, con la finalidad de que sean registrados en el servidor para su posterior lectura desde mi aplicación de iPad.

En resumen, sincronización.

Alguien ha hecho algo similar?
Alguna pista?

Gracias de antemano.
Juan Carlos Salinas Ojeda
México. D.F.
-------------------------------------------------
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: enviar POST y obtener Json

Post by Daniel Garcia-Gil »

Hola

si es posible y harbour te brinda el manejo nativo de JSON, el proceso es bastane simnple

este es el codigo que uso para hacer el request a la web

Code: Select all

#define SEPCHAR "^"
FUNCTION GetDatas( cUrl, cHost )
   LOCAL cRequest
   LOCAL cResponse
   LOCAL cBuffer
   LOCAL pSocket
   LOCAL nBytes
   LOCAL nMaxBuff := 1024
   LOCAL aResponse := {}
   
   DEFAULT cHost := SET_HOST                
                     
   HB_INetInit()
   
   if cHost == SET_HOST  
      cUrl := "/webservice/"+cUrl
   endif

   pSocket := HB_INetConnect( cHost, 80 )

   IF HB_INetErrorCode( pSocket ) <> 0
      RETURN NIL
   ELSE
      cRequest  := strTran( SET_REQUEST, "[URL]", cUrl )
      cRequest  := strTran( cRequest, "[HOST]", cHost )             
      nBytes    := HB_INetSend( pSocket, cRequest )
      cBuffer   := SPACE(nMaxBuff)
      cResponse := ""

      DO WHILE nBytes > 0
         nBytes    := HB_INetRecv( pSocket, @cBuffer )
         cResponse += LEFT( cBuffer, nBytes )
         cBuffer   := SPACE(nMaxBuff)
      ENDDO

      cResponse := HB_TRANSLATE( cResponse, "UTF8", "EN" )
      aResponse = hb_ATokens( cResponse,SEPCHAR )
      aResponse = ADel( aResponse, 1 )
      aResponse = ASize( aResponse, Len( aResponse ) - 1 )

   ENDIF

   HB_INetClose( pSocket )
   HB_INetCleanUp()
   
   if aResponse == NIL
      aResponse = {}
   endif
   
RETURN aResponse
 
desde la web retornas un simple string con formato json (php, ruby, etc te dan soporte para eso)
ejemplo
^[{"fecha":"2012/05/21","cliente":"Harbour"}, {"fecha":"2012/05/21","cliente":"Fivewin"} ]
este simbolo "^" es importate para simplificar la tarea de separar la cabecera del mensaje
eso lo ves en esta parte del codigo

Code: Select all

      aResponse = hb_ATokens( cResponse,SEPCHAR )
      aResponse = ADel( aResponse, 1 )
      aResponse = ASize( aResponse, Len( aResponse ) - 1 )
despues para tratar la respuesta es lo siguiente

Code: Select all

aPack = GetDatas( "mirequest", "mipagina.com" ) 
hb_jsonDecode( aPack[ 1 ], @jSon )
la variable json tendra el hash con la la informacion... segun el ejemplo anterio, quedaria de esta manera
{ { "fecha" => "2012/05/21", "cliente"=>"harbour" }, { "fecha" => "2012/05/20", "cliente"=>"Fivewin" } }
? jSon[ 1 ][ "fecha" ] // 2012/05/21
? jSon[ 1 ][ "cliente" ] // Harbour

? jSon[ 2 ][ "fecha" ] // 2012/05/20
? jSon[ 2 ][ "cliente" ] // fivewin
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
VeRCE
Posts: 219
Joined: Fri Nov 04, 2005 2:34 pm
Location: Mexico D.F.
Contact:

Re: enviar POST y obtener Json

Post by VeRCE »

Muchas gracias Daniel... mi pregunta ahora es.. esto va con harbour... yo uso xHarbour, habrá algún problema ?
Juan Carlos Salinas Ojeda
México. D.F.
-------------------------------------------------
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: enviar POST y obtener Json

Post by Daniel Garcia-Gil »

al parecer xharbour tambien tiene soporte para json, el tema ahora es probarlo
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
VeRCE
Posts: 219
Joined: Fri Nov 04, 2005 2:34 pm
Location: Mexico D.F.
Contact:

Re: enviar POST y obtener Json

Post by VeRCE »

Exceente !!! Muchísimas gracias !!!
Ya les platicaré.
Juan Carlos Salinas Ojeda
México. D.F.
-------------------------------------------------
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: enviar POST y obtener Json

Post by Daniel Garcia-Gil »

faltaron estos define

Code: Select all

#define SET_HOST "mihost.com"
#define SET_REQUEST "GET [URL] HTTP/1.0" + CRLF + ;
                   "Host: [HOST]" + CRLF + ;
                   'User-Agent: Mozilla/5.0 Firefox/3.6.12' + CRLF +;
                   'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + CRLF +;
                   'Accept-Language: en-us,en;q=0.5' + CRLF +;
                   'Accept-Encoding: deflate' + CRLF +;
                   'Accept-Charset: utf-8;q=0.7,*;q=0.7' + CRLF +;
                   "Connection: Close" + CRLF +;
                   CRLF
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Post Reply