segunda-feira, 25 de julho de 2016

Webservice - Exemplo serviço RestFULL com o mobile.



[16:22:07] Fábio Alexandre Silveira: Pessoal, com a rotina abaixo consegui consumir  o serviço RestFULL com o mobile.


//Retorno ao Httprequest
ResCode     is Buffer
lstlotLocal    is ResultLoteLocal//Minha class 

//Dados de Envio
sHttpQuery     is string

//Minha Variaveis POST
sSistema    is string ="999999"
sAssinatura    is string = "xyxyxyxyxyxyxyxyxyxyyxxyyxyxy"
sUnidade    is string = "999"

//Dados de user
bufBUser    is Buffer = "MyUser"
bufBPassword   is Buffer = "XYXYXYXYXYXYXYYXYXYXYX"
//
bufSAuthenticacaoBasc is Buffer =  Crypt(StringBuild("%1:%2",bufBUser,bufBPassword), "", cryptNone    )


//Varialvel para armazenar dados do codigo de contagem e codigo do local
sCodContange   is string
sCodLocal    is string

//Limpa o looper
LooperDeleteAll(LOOP_LOTESCONTAGEM)

//Cria o formulário de envio
HTTPCreateForm("FORM")
HTTPAddParameter( "FORM","sistema",sSistema)
HTTPAddParameter( "FORM","assinatura",sAssinatura)
HTTPAddParameter( "FORM","unidade,",sUnidade)

IF NoSpace( EDT_CODLOTE)="" THEN
 //GET para a lista de lotes. Para o caso, onde o usuário não informou contagem e local

 //API
 sHttpQuery = URLEncode(StringBuild ("https://Seu _dominio:sua_porta/Sua API?sistema=%1&assinatura=%2&unidade=%3",sSistema,sAssinatura,sUnidade)) 

ELSE
 sCodContange = ExtractString(EDT_CODLOTE,1,"-",FromBeginning)
 sCodLocal = ExtractString(EDT_CODLOTE,2,"-",FromBeginning)
 IF sCodLocal = EOT OR sCodLocal="" THEN
  Info("Favor informar código do local")
  RETURN
 END

 HTTPAddParameter( "FORM","Parametro_1",sCodContange)
 HTTPAddParameter( "FORM","Parametro_1",sCodLocal)
 //API
 sHttpQuery = URLEncode( StringBuild( "https://Seu _dominio:sua_porta/Sua_API?sistema=%1&assinatura=%2&unidade=%3&contagem=%4&local=%5",sSistema,sAssinatura,sUnidade,sCodContange,sCodLocal))
END

//Authentica requsição
<COMPILE IF ConfigurationType=Android OR ConfigurationType=iOS>
 HTTP.IgnoreError =httpIgnoreInvalidCertificateName
<END>


//POST
ResStart is boolean = HTTPSendForm("FORM","Sua_Dominio",httpPost,"","Authorization: Basic" + bufSAuthenticacaoBasc   ,"application/json")

//GET
ResStart = HTTPSendForm("FORM",sHttpQuery,httpGet,"","Authorization: Basic " + bufSAuthenticacaoBasc  ,"application/json")




IF ResStart = True THEN
 //Resgata o valor da consulta
 ResCode= HTTPGetResult()
 
 IF ResCode <> "" THEN
  //Desserializao json na classe LotesLocais  
  Deserialize(lstlotLocal,ResCode,psdJSON)
 
  //Carrega o controle looper 
  FOR i = 1 TO ArrayCount(lstlotLocal.lista)
   LooperAddLine(LOOP_LOTESCONTAGEM,lstlotLocal.lista[i].idContagem,lstlotLocal.lista[i].descricaoLocal,lstlotLocal.lista[i].qtdNiveis,lstlotLocal.lista[i].qtdEndereco,lstlotLocal.lista[i].qtdProdutos)
  END
 ELSE
  Info("Registro não encontrado!")
  <COMPILE IF ConfigurationType=Android>
   SetFocus(EDT_CODLOTE)
  <END>
 END
 //Envia mensagem de erro
 Error(ErrorInfo(errFullDetails ))
END


CASE EXCEPTION:
Error( ExceptionInfo(errFullDetails))
[16:22:22] Fábio Alexandre Silveira: Espero que ajude.

Nenhum comentário:

Postar um comentário

Teste

Teste
teste