IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Requete HTTP vers serveur web [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 65
    Points : 51
    Points
    51
    Par défaut Requete HTTP vers serveur web
    Bonjour,

    Je souhaiterais avoir des conseils sur la méthode à utiliser pour envoyer des requêtes http vers un service web externe.
    C'est le principe d'une API REST, j'ai vu différentes méthodes mais la plupart sont sur la même url, je souhaite en effet envoyer des requêtes sur un serveur différent.

    J’espère avoir était clair.... Merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 429
    Points : 15 801
    Points
    15 801
    Par défaut
    il suffit de changer le nom du serveur, cela ne change pas grand chose pour une requête HTTP
    montre nous ce que tu as déjà essayé

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    j'ai utilisé récemment Buzz, assez simple et légère.
    Pour aller chercher une réponse xml (en get) d'une api sur un serveur distant j'ai utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $browser = new Browser();
    $response_obj   = $browser->get($url);
    $xml_response = $response_obj->getContent();
    L'API n'était pas REST parcontre, mais je crois que tu peux spécifier la méthode de ta requête vu que tu as accès aux objets de bas niveau. Voir https://github.com/kriswallsmith/Buzz

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 65
    Points : 51
    Points
    51
    Par défaut
    Très bien, donc concrètement je souhaite envoyer une requête sur un service externe il me faut changer les valeurs de $_SERVER comme ceci par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       $_SERVER['REQUEST_URI'] = "login/index.php";
    Sachant que mes 2 projets sont en local, le premier est sur localhost/symfony... et le deuxieme localhost/login/index.php
    Le serveur est donc bien configurer, ensuite j'affecte à $_SERVER['REQUEST_URI'] l'adresse du second pour lui envoyer la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      'SERVER_NAME' => string 'localhost' (length=9)
      'SERVER_ADDR' => string '127.0.0.1' (length=9)
      'SERVER_PORT' => string '80' (length=2)
      'REMOTE_ADDR' => string '127.0.0.1' (length=9)
      'HTTP_ORIGIN' => string 'http://localhost' (length=16)
      'REQUEST_URI' => string 'login/index.php' (length=15)
    Donc je récupère mes valeurs, créer la requête et l'envoi de quelle manière ?
    (Ceci reste approximatif je ne sais pas si je suis partis sur la bonne voie )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        $uri = $_SERVER['REQUEST_URI'] = "login/index.php";
     
        $uri = "http://localhost/login/index.php";
        $return = $request->create($uri, 'GET', array('test' => 'test'));
        echo $return;
     
     //  envoi ????

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Bonjour,

    Comme dit plus haut, tu peux utiliser une librairie externe pour effectuer des requetes HTTP, et surtout installer un bundle qui intègre cette librairie dans ton projet.
    De cette façon, tu aura accés dans le profiler à toutes les infos de cette requete (contenu, temps de réponse,...)
    Pour ma part j'utilise celui-ci avec la librairie Guzzle
    https://github.com/misd-service-deve.../guzzle-bundle

    $_SERVER['REQUEST_URI'] = "login/index.php";
    Avec Symfony, tu ne dois pas utiliser les variables globales, et même sans Symfony, les modifier est contre indiqué.

    $uri = $_SERVER['REQUEST_URI'] = "login/index.php";

    $uri = "http://localhost/login/index.php";
    $return = $request->create($uri, 'GET', array('test' => 'test'));
    echo $return;
    met ton url dans le fichier parameters.yml et récupère là dans ton controller, ce sera beaucoup + souple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->container->getParameter('mon_url_externe');
    A quoi correspond $request ?

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 65
    Points : 51
    Points
    51
    Par défaut
    Merci pour vos réponses. Pour l'info j'ai utiliser curl

    voici un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
      $ch = curl_init();
     
                    $postData = array(
                        'route' => 'login',
                        'password' => $password,
                        'email' => $email,
                        'testcookie' => '1'
                    );
     
                    curl_setopt_array($ch, array(
                        CURLOPT_URL => 'http://localhost/login/index.php',
                        CURLOPT_RETURNTRANSFER => true,
                        CURLOPT_POST => true,
                        CURLOPT_POSTFIELDS => $postData,
                        CURLOPT_FOLLOWLOCATION => true
                    ));
     
                    $output = curl_exec($ch);
     
                    $objUser = json_decode($output);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme J2E requete HTTP vers serveur tomcat sur internet.
    Par helpmeplzzz dans le forum Cloud Computing
    Réponses: 0
    Dernier message: 07/09/2013, 13h54
  2. [IP-2010] Envoyer les données du formulaire vers Serveur Web (HTTP) - page PHP
    Par MichelCote dans le forum InfoPath
    Réponses: 0
    Dernier message: 07/03/2012, 17h14
  3. redirection http vers serveur web
    Par Jonathan.b dans le forum Apache
    Réponses: 16
    Dernier message: 11/07/2008, 11h53
  4. Réponses: 5
    Dernier message: 05/11/2007, 09h21
  5. Acquisition audio vers serveur web
    Par Gromly dans le forum Flash
    Réponses: 6
    Dernier message: 11/04/2006, 22h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo