Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

456
Visualizações
¿Por qué no puedo acceder al contenido de la respuesta cuando el cliente HTTP de Symfony encuentra un error y, en su lugar, se lanza una excepción?

Quiero realizar una solicitud para recuperar la información del usuario del servidor OAUTH con Symfony HttpClient, pero no puedo obtener la respuesta directamente cuando encuentro una respuesta de error, porque el cliente genera una excepción.

Mi proveedor de usuario:

 public function loadUserByUsername($username) { try { $response = $this->httpClient->request( 'GET', $this->baseUrl . '/userinfo', [ 'headers' => [ 'Accept' => 'application/json', 'Content-Type' => 'application/json' ], 'auth_bearer' => $username ] ); var_dump($response->toArray());die; } catch (\Exception $e) { var_dump($e->getMessage());die; throw new UsernameNotFoundException($e->getMessage()); } }

Cuando llamo a $response->toArray() o $response->getContent() , se genera una excepción y aparece el siguiente mensaje de error en Postman

 <pre class='xdebug-var-dump' dir='ltr'> <small>/var/www/html/backend/src/Security/Provider/KeycloakUserProvider.php:50:</small><small>string</small> <font color='#cc0000'>'HTTP/2 401 returned for &quot;https://oauth_server/userinfo&quot;.'</font> <i>(length=127)</i> </pre>

Un ejemplo de la respuesta recibida en el navegador:

 {"error":"invalid_request","error_description":"Token not provided"}

¿Por qué no puedo acceder a la respuesta directamente llamando a $response->toArray() ?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Siempre que el código de estado de la respuesta no sea "bueno" (por ejemplo, en el rango 300-599), la respuesta se considera excepcional y se supone que debe manejarla.

Esto está claramente documentado aquí :

Cuando el código de estado HTTP de la respuesta está en el rango 300-599 (es decir, 3xx, 4xx o 5xx), los métodos getHeaders(), getContent() y toArray() lanzan una excepción apropiada, todos los cuales implementan HttpExceptionInterface.

Para excluirse de esta excepción y manejar los códigos de estado 300-599 por su cuenta, pase false como argumento opcional para cada llamada de esos métodos, por ejemplo, $response->getHeaders(false);.

Si no desea que el cliente genere una excepción cuando encuentre una respuesta incorrecta, debe pasar false a getContent() o toArray() .

P.ej

 $rawResponse = $response->getContents(false); $arrayResponse = $response->toArray(false);

No hay nada de malo en manejar la excepción explícitamente en su código y hará que su aplicación exprese mejor las condiciones que encuentra. Un "no bueno" debe tratarse como anómalo y manejarse en consecuencia.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda