Significado daqueles 3 bytes iniciais, após Open() da HBTIP
Enviado: 28 Fev 2020 00:36
Quando chamo o método Read(), logo após um Open() da classe TIPClientHttp(), recebo uma string JSON vinda de uma página em PHP. Porém, notei que ocorre de vir, junto, três bytes de caracteres estranhos que precedem os dados desejados.
Quando chamo o mesmo método Read(), após um Post(), por exemplo, esse problema não ocorre.
Estou usando exemplos da HBTip que acompanham o Harbour 3.2, para tentar consumir uma API REST desenvolvida em PHP. A solução que encontrei para o problema foi suprimir esses três bytes iniciais, invocando a função substr(). Mas, gostaria de entender melhor a causa. Talvez, eu não esteja sabendo utilizar o método de forma correta.
Trecho de exemplo de meu código onde o problema acontece:
Neste outro trecho, por exemplo, não tem problema algum:
Quando chamo o mesmo método Read(), após um Post(), por exemplo, esse problema não ocorre.
Estou usando exemplos da HBTip que acompanham o Harbour 3.2, para tentar consumir uma API REST desenvolvida em PHP. A solução que encontrei para o problema foi suprimir esses três bytes iniciais, invocando a função substr(). Mas, gostaria de entender melhor a causa. Talvez, eu não esteja sabendo utilizar o método de forma correta.
Trecho de exemplo de meu código onde o problema acontece:
Código: Selecionar todos
oHTTP := TIPClientHttp():new( oURL )
oHTTP:setCookie(cSessaoAtiva)
oHTTP:hFields := hAuthBearer
if oHTTP:Open()
cJSON := oHttp:read()
cJSON := substr(cJSON,4) // Remove 3 bytes estranhos que aparecem
// no início da string, quando lida logo
// depois do método Open().
cSessaoAtiva := oHTTP:getcookies()
else
? "Etapa #1 Error:", "oHTTP:Open()", oHTTP:lastErrorMessage()
endif
Código: Selecionar todos
oHTTP := TIPClientHttp():new( oURL )
oHTTP:setCookie(cSessaoAtiva)
IF oHTTP:Open()
IF oHTTP:Post( hb_jsonEncode( hLogin ) )
cJSON := oHttp:read()
? oHTTP:getcookies()
ELSE
? "Etapa #2 Error:", "oHTTP:Post()", oHTTP:lastErrorMessage()
ENDIF
oHTTP:Close()
ELSE
? "Etapa #2 Error:", "oHTTP:Open()", oHTTP:lastErrorMessage()
ENDIF