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)
Deixe um comentário