Você já se deparou com o erro HttpVersionNotSupported via AdvPL? Sabe o que causa? Então vamos ver no artigo de hoje.
O que acontece pessoal, é que algumas APIs podem ter o “espaço vazio” na URL da requisição, então vamos pegar a seguinte URL como exemplo:
https://empresa.com/api/consulta funcionarios?matricula=000001
Vocês notaram que tem um espaço ali entre as palavras “consulta” e “funcionarios”? O que acontece se tentarmos consumir via AdvPL essa API?
Se nós não tratarmos esse espaço, ele vai ocasionar o erro 505 com a mensagem HttpVersionNotSupported. Então qual seria a melhor forma de resolver essa questão?
Ao invés do caractere “espaço vazio”, nós temos que usar o código “%20” que faz essa tratativa por trás nas plataformas WEB, então a URL teria que ficar dessa forma:
https://empresa.com/api/consulta%20funcionarios?matricula=000001
Mas e via AdvPL, como podemos tratar isso? Basta usarmos a função Escape para tratar esses tipos de caracteres. Então considerando a URL acima, nosso exemplo ficaria assim:
//Adiciona os cabeçalhos da requisição
aHeadOut := {}
aAdd(aHeadOut, "User-Agent: Mozilla/4.0 (compatible; Protheus " + GetBuild() + ")")
//Monta a URL de requisição
cURL := "https://empresa.com"
cRequis := "api/consulta funcionarios?matricula=000001"
//Trata os caracteres especiais (como espaço vazio)
cRequis := Escape(cRequis)
//Instancia o consumo da API
oRestClient := FWRest():New(cURL)
oRestClient:setPath(cRequis)
//Ai aqui você já pode acionar os métodos para consumir a API
If oRestClient:Get(aHeadOut)
Bom pessoal, por hoje é só.
Abraços e até a próxima.