Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

350
Vistas
Symfony2 - file_get_contents() falla en la misma URL de la API del proyecto

Intento ejecutar file_get_contents() en mi propia ruta utilizada principalmente para AJAX:

 file_get_contents($this->router->generate('ajax_get_provinces', array('country' => $country->getName()), true));

me sale un error:

Advertencia: file_get_contents ( http://symfony.trainingexperience.org/ajax/get-provinces/Spain ): no se pudo abrir la transmisión: ¡la solicitud HTTP falló! HTTP/1.0 400 Solicitud incorrecta

Acción:

 /** * GET method * * @Route("/ajax/get-provinces/{country}", name="ajax_get_provinces") * * @param $country * @param Request $request * * @return JsonResponse */ public function getProvinces($country, Request $request) { $translator = $this->get('translator'); if (!$request->isXmlHttpRequest()) { return new JsonResponse(array('message' => $translator->trans('ajax.access.error')), 400); } ... return new JsonResponse($provinces, 200); }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Este es tu problema yo diría:

 if (!$request->isXmlHttpRequest()) { return new JsonResponse(array('message' => $translator->trans('ajax.access.error')), 400); }

file_get_contents no establece los encabezados necesarios para que la solicitud se identifique como XmlHttpRequest (X-Requested-With)

 /** * Returns true if the request is a XMLHttpRequest. * * It works if your JavaScript library sets an X-Requested-With HTTP header. * It is known to work with common JavaScript frameworks: * * @see http://en.wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript * * @return bool true if the request is an XMLHttpRequest, false otherwise */ public function isXmlHttpRequest() { return 'XMLHttpRequest' == $this->headers->get('X-Requested-With'); }

Intente ejecutar su solicitud a través de curl con los encabezados correctos o elimine la verificación XMLHttpRequest en su acción.

Aquí puede leer cómo realizar la solicitud a través de curl: PHP: Simular XHR usando cURL

Editar: para configurar el encabezado requerido con file_get_contents, puede probar esto

 $options = array( 'http' => array( 'header' => "Accept:application/json\r\n" . "X-Requested-With:XMLHttpRequest\r\n", 'method' => 'GET' ), ); $context = stream_context_create($options); file_get_contents($this->router->generate('ajax_get_provinces', array('country' => $country->getName()), true, $context));

Esto podría funcionar si no faltan otros encabezados.

over 4 years ago · Santiago Trujillo Denunciar

0

Encontré esto en file_get_contents arroja 400 Error de solicitud incorrecta PHP

Cito: es posible que desee intentar usar curl para recuperar los datos en lugar de file_get_contents. curl tiene mejor soporte para el manejo de errores:

 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->router->generate('ajax_get_provinces', array('country' => $country->getName()), true)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); // convert response $output = json_decode($output); // handle error; error output if(curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) { var_dump($output); } curl_close($ch);

Esto puede darle una mejor idea de por qué está recibiendo el error. Un error común es alcanzar el límite de velocidad en su servidor.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda