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.