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)


Comments

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *