Utilizar Rest em Harbour

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

hs_paulo
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 02 Set 2015 17:11
Localização: Bauru

Utilizar Rest em Harbour

Mensagem por hs_paulo »

Ainda não consegui.

a API só funciona com GET e retorna vazio.
Quando faço pelo POSTMAN ou SOAPui retorna o conteudo.
Não sei onde está o meu erro.
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

Utilizar Rest em Harbour

Mensagem por Mario Mesquita »

Pessoal, bom dia.

Não entro há um tempinho mas vi esse tópico e tenho uma experiência recente que talvez possa contribuir:

Eu usei uma função para a conversão e, aparentemente, ela tem um bug. É a "HB_Base64Encode".

Ela está gerando com CHR(10) e CHR(13) no meio dos dados convertidos e causa falha na autenticação.

Resolvi tirando esses caracteres do resultado final:

Código: Selecionar todos

FUNCTION Cnv64Hash(xHash)
LOCAL xCnv := ""
// convertendo pra base64 - mr, 17/10/19.
//msginfo(xHash)
//msginfo(str(len(xhash),3,0))
xCnv = HB_Base64Encode( xHash, LEN(xHash) )   // converte o conteúdo do arquivo em base64
//msginfo(str(len(xCnv),3,0))
//wCnv := SUBS(xCnv,1,len(xhash))
//msginfo(xCnv)
wCnv := ""
for k = 1 to len(xCnv)
    //msginfo('pos: '+str(k,3,0)+' char: '+subs(xCnv,k,1)+' - asc: '+str(asc(subs(xCnv,k,1)),3,0))
	// tirando os chr(10) e chr(13) da chave //
	xChar := SUBS(xCnv,k,1)
	IF ASC(xChar) # 10 .AND. ASC(xChar) # 13
	   wCnv += xChar
	ENDIF
next

RETURN ALLTRIM(wCnV)
Fazendo isso, funciona certinho. Não reparem as linhas isoladas, rs

Sds,
Mario.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Utilizar Rest em Harbour

Mensagem por JoséQuintas »

Igual assinatura de XML, que algumas são divididas por blocos, como se fosse pra deixar mais "humanas" visualmente.

Dica pra remover caracteres:

Código: Selecionar todos

cCode := StrTran( cCode, Chr(13) + Chr(10), "" )
Ou remover um de cada vez, se não seguirem esse padrão de estarem juntos
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

Utilizar Rest em Harbour

Mensagem por Mario Mesquita »

Valeu, Quintas!

Por isso vc é o mestre, kkkkk Sou todo tosco, já botei no loop...

Abraço,
Mario.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Utilizar Rest em Harbour

Mensagem por JoséQuintas »

Mario Mesquita escreveu:Por isso vc é o mestre, kkkkk Sou todo tosco, já botei no loop...
Mas sempre tem outras situações pra usar LOOP.
Uma legal é pra procurar caractere inválido ou coisa do tipo.
E tem também o FOR EACH

Código: Selecionar todos

FOR EACH cLetra IN @cTexto DESCEND
   DO CASE
   CASE cLetra $ "0123456789"
   CASE cLetra $ "abcdefgh..."
   CASE cLetra $ "ABCDEFGH..."
   CASE cLetra == "é", cLetra := "e"
   CASE cLetra == Chr(13); cLetra := ""
   CASE cLetra == Chr(10); cLetra := ""
   OTHERWISE
     ? cLetra, Asc( cLetra ), Substr( cTexto, cLetra:__EnumIndex - 10, 20 )
   ENDCASE
NEXT
Detalhe do @ no FOR/EACH, é o que permite atualizar letras em cTexto
O DESCEND, é porque não sei o comportamento se trocar a letra por "", se o FOR/EACH se perde, então vai de trás pra frente.... rs

De um jeito ou de outro, a gente resolve.
E se não existir função praquilo, a gente inventa.

Mas de nada adiantaria conhecer a função, se não soubesse desse detalhe que mencionou sobre assinatura.
No final, todo mundo é mestre, cada um em uma coisa, e assim, todo mundo vai ensinando e aprendendo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

Utilizar Rest em Harbour

Mensagem por Mario Mesquita »

Bom dia a todos.

Valeu, Quintas. Sempre dando dicas valiosas. Interessante essa do FOR/EACH. Obrigado.

Sds,
Mario.
Responder