Me lembro da época de faculdade que um professor solicitou que acessássemos o site do INPE (Instituto de Pesquisas Espaciais), usando C++, para buscar dados históricos de meteorologia e armazená-las em uma tabela de banco de dados. Foi uma desafio bem legal na época... Esses dias lembrei dessa situação e pensei: Seria possível acessar o HTML de uma página após uma requisição, no Apex do Salesforce? Sim. É possível! Veja:
Nesse exemplo, resolvi buscar a previsão do tempo atual no site Clima Tempo. Para inciar, é necessário registrar o site do clima tempo, como site seguro no Salesforce. Para tal, é necessário configurar o site do Clima Tempo na Configurações de site remoto:
E adicionar o site:
Após isso, podemos criar nossa classe para fazer o request no site do Clima Tempo:
public class PrevisaoTempoController { public String temperatura { get; set; } public PrevisaoTempoController(){ String url = 'https://www.climatempo.com.br/previsao-do-tempo/aeroporto/258/belohorizonte-mg'; Http h = new Http(); HttpRequest request = new HttpRequest(); request.setEndpoint(url); request.setMethod('GET'); HttpResponse response = h.send(request); String htmlRetorno = response.getBody().replaceAll('\\n', ' '); //Tratando conteúdo integer indice = htmlRetorno.indexOf('id="momento-temperatura">'); this.temperatura = htmlRetorno.substring(25 + indice, 27 + indice); } }
Veja que faço uma requisição com o HttpRequest na URL que tem a previsão do tempo de Belo Horizonte. Com o método getBody() do response, consigo o HTML de retorno. As linhas finais são apenas para pegar a informação específica dentro do HTML. É importante ressaltar que esse tratamento da informação pode parar de funcionar, caso o Clima Tempo altere seu site.
Por fim, um Visualforce simples para exibir as informações de temperatura:
<apex:page controller="PrevisaoTempoController"> Temperatura em Belo Horizonte: {!temperatura}° </apex:page>
Veja o resultado final renderizado, de nossa página Visualforce:
Por hoje é isso! Até mais...
* Precisa de um suporte ou consultoria nos desenvolvimentos Apex sua Org Salesforce? Entre em contato conosco - CbCloud: http://www.cbcloud.com.br/ - Somos parceiros gerenciado Salesforce.
Nenhum comentário:
Postar um comentário