Como utilizar wp_remote_retrieve_body() no WordPress2 min leitura

Explicação de como utilizar a função PHP wp_remote_retrieve_body() do WordPress e exemplo prático de código para fazer a validação de um código PHP através da API gratuita do PHP Code Checker.

Com a função PHP wp_remote_retrieve_body() você captura somente o conteúdo (body) de uma resposta HTTP. Caso houver um erro ou não existir o conteúdo, o retorno será uma string vazia ('').

Antes de mostrar um exemplo de código da função, vamos revisar a maneira mais comum de selecionar o conteúdo depois de uma requisição HTTP, que é selecionar a chave body do array de resposta:

<?php $conteudo = $resposta['body'];
Code language: PHP (php)

Como boa prática, é importante verificar primeiro se esta chave existe no array e se ele não retornou um erro. O código poderia ficar assim:

<?php $conteudo = ''; if ( ! is_wp_error( $response ) && isset( $resposta['body'] ) ) { $conteudo = $resposta['body']; }
Code language: PHP (php)

A função wp_remote_retrieve_body() já faz essas validações, deixando o código mais enxuto:

<?php $conteudo = wp_remote_retrieve_body( $resposta );
Code language: PHP (php)

Validando um código PHP com wp_remote_retrieve_body() e PHP Code Checker

Procurando por exemplos práticos de códigos, encontrei um que utilizava a função para validar um código em PHP através da API gratuita do PHP Code Checker. Resolvi então fazer minha própria versão simplificada para exemplificar como utilizá-la em conjunto com a função PHP wp_remote_post().

<?php // Código com erro $codigo = '<?php echo "teste" . $ ; ?>'; // Envio do código para o PHP Code Checker $url = "https://phpcodechecker.com/api"; $argumentos = array( 'body' => array( 'code' => $codigo ) ); $resposta = wp_remote_post( $url, $argumentos ); // Tratamento da resposta if ( is_wp_error( $resposta ) ) { $resposta_erro = $resposta->get_error_message(); echo "Erro ao fazer a requisição: " . $resposta_erro; } else { $conteudo = json_decode( wp_remote_retrieve_body( $resposta ), true ); if ( is_array( $conteudo ) ) { if ( $conteudo['errors'] === 'TRUE' ) { echo "Encontrado erros: " . $conteudo['syntax']['message']; } else if ( $conteudo['errors'] === 'FALSE' ) { echo "Nenhum erro encontrado."; } } else { echo "Erro ao obter a resposta da requisição."; } }
Code language: PHP (php)

Similar Posts

Você tem algo construtivo sobre este texto para dizer? Então comente abaixo