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

Langage PHP Discussion :

envoi requete vers serveur et recuperation resultat [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut envoi requete vers serveur et recuperation resultat
    Bonjour,

    je souhaiterai creer un formulaire qui va interroger un serveur distant.
    pour cela pas de soucis je rempli mon formulaire de cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <form name="form1" id="form1" method="get" 
    action="http://129.164.17.79/Test">
    <select name="ap" id="ap">
    <option value="XML" selected="selected">XML</option>
    </select> 
    <select name="ln" id="ln">
    	<option value="fr" selected="selected">French</option>
    </select> 
    <input name="in" id="status" value="Saisir la phrase ici"
    	type="text" /> 
    <input value="Submit" type="submit" />
    	</form>
    le formulaire va me renvoyer un xml. le soucis est que je souhaiterai recuperer ce xml pour le traiter et ne pas l'afficher directement.

    je voudrai donc savoir comment interroger un serveur distant et recuperer le resultat de la requete pour le traiter.

    merci

  2. #2
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    Salut,
    avec quelques chose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ob_start();
       		include("mon xml");
       		$xml= ob_get_contents();
       	ob_end_clean();
    tu met ton xml dans un buffer (et dans $xml :-)) sans affichage... Apres a toi de faire le traitement necessaire.

    Guigo

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Mouais, il y a cURL et même PHP (redéfinition de contexte) quand allow_url_fopen est à On pour ça.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par julp Voir le message
    Mouais, il y a cURL et même PHP (redéfinition de contexte) quand allow_url_fopen est à On pour ça.
    jai lu un peu le tuto de cURL sa ma l'air pas mal.

    par contre concretement je dois mettre le nom de mon fichier php dans le action c'est ça?
    et ensuite dans ce meme fichier je vais envoyer la requete au serveur et recuperer mon resultat grace à cURL?

    ai-je bien compris?

    merci

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Oui, c'est ça, ce serait à vous de traiter/réceptionner les données de ce formulaire pour ensuite le "retransmettre" au site distant.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par julp Voir le message
    Oui, c'est ça, ce serait à vous de traiter/réceptionner les données de ce formulaire pour ensuite le "retransmettre" au site distant.
    en fait je veux juste soumettre une phrase au serveur distant
    recuperer les resultat sous forme xml
    et la grace a ce xml pouvoir realiser mes operations sur mon propre serveur.

    je recherche activement un exemple... sur google

    a suivre

  7. #7
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Etant donné que c'est le site distant qui traite ta requête, tu ne peux pas récupérer directement le résultat. C'est à dire qu'il ne te "retournera" rien.

    Le serveur distant pourrait tout simplement re-générer un fichier XML placé à un endroit précis.

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    J'avais bien compris.

    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
    22
    23
    24
    25
    26
    27
    28
    <form action="" method="POST">
        Donnée : <input type="text" name="data" value="" />
        <br />
        <input type="submit" value="Submit" />
    </form>
     
    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (!empty($_POST['data'])) {
            $url = 'http://localhost/test.php';
            $contexte = stream_context_create(
                array(
                    'http' => array(
                        'method' => 'POST',
                        'header' => "User-Agent: PHP5 & DOM/SimpleXML\r\nContent-type: application/x-www-form-urlencoded",
                        'content' => http_build_query($_POST),
                        'max_redirects' => 2,
                        'timeout' => 5,
                    )
                )
            );
            libxml_set_streams_context($contexte);
            $sxml = simplexml_load_file($url); // Il faudrait tester que $sxml ne vaut pas FALSE ici s'il y a erreur
            var_dump($sxml->getName(), (string) $sxml);
        } else {
            // ...
        }
    }
    test.php (simulation du script distant générant le XML) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $dom = new DomDocument;
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (!empty($_POST['data'])) {
            $dom->appendChild($dom->createElement('data', $_POST['data']));
        } else {
            $dom->appendChild($dom->createElement('error', 'data missing'));
        }
    } else {
        $dom->appendChild($dom->createElement('error', 'unexpected HTTP method'));
    }
    echo $dom->saveXML();
    ^^ C'est ni plus ni moins ce qu'il y a dans la FAQ.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par julp Voir le message
    J'avais bien compris.

    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
    22
    23
    24
    25
    26
    27
    28
    <form action="" method="POST">
        Donnée : <input type="text" name="data" value="" />
        <br />
        <input type="submit" value="Submit" />
    </form>
     
    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (!empty($_POST['data'])) {
            $url = 'http://localhost/test.php';
            $contexte = stream_context_create(
                array(
                    'http' => array(
                        'method' => 'POST',
                        'header' => "User-Agent: PHP5 & DOM/SimpleXML\r\nContent-type: application/x-www-form-urlencoded",
                        'content' => http_build_query($_POST),
                        'max_redirects' => 2,
                        'timeout' => 5,
                    )
                )
            );
            libxml_set_streams_context($contexte);
            $sxml = simplexml_load_file($url); // Il faudrait tester que $sxml ne vaut pas FALSE ici s'il y a erreur
            var_dump($sxml->getName(), (string) $sxml);
        } else {
            // ...
        }
    }
    test.php (simulation du script distant générant le XML) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $dom = new DomDocument;
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (!empty($_POST['data'])) {
            $dom->appendChild($dom->createElement('data', $_POST['data']));
        } else {
            $dom->appendChild($dom->createElement('error', 'data missing'));
        }
    } else {
        $dom->appendChild($dom->createElement('error', 'unexpected HTTP method'));
    }
    echo $dom->saveXML();
    ^^ C'est ni plus ni moins ce qu'il y a dans la FAQ.
    merci de ton aide
    ça à l'air de fonctionner (du moins en partie)
    je recupere comme resultat de var dump :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string(3) "TEI" string(3) " "
    TEI est la racine de mon xml
    je voudrai savoir ou est stocker mon xml ??
    merci

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut
    voici mon code ce sera plus simple :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <form name="form1" id="form1" method="post"
    	action=""><select name="ap" id="ap">
    	<option value="XMLTei" selected="selected">XMLTei</option>
    </select> <select name="ln" id="ln">
    	<option value="fr" selected="selected">French</option>
    </select> <input name="in" id="status" value="Saisir la phrase ici"
    	type="text" /> <input value="Submit" type="submit" /></form>
     
    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (!empty($_POST['in'])) {
            $url = 'http://129.194.19.89/Parser';
            $contexte = stream_context_create(
                array(
                    'http' => array(
                        'method' => 'POST',
                        'header' => "User-Agent: PHP5 & DOM/SimpleXML\r\nContent-type: application/x-www-form-urlencoded",
                        'content' => http_build_query($_POST),
                        'max_redirects' => 2,
                        'timeout' => 5,
                    )
                )
            );
            libxml_set_streams_context($contexte);
            echo $url;
            $sxml = simplexml_load_file($url); // Il faudrait tester que $sxml ne vaut pas FALSE ici s'il y a erreur
            //print_r ($sxml->getName(), (string) $sxml);
           var_dump($sxml->getName(), (string) $sxml);
        } else {
     
            // ...
        }
    }
    ?>

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Hein ?

    La manipulation du document XML après ne dépend que de l'API (DOM, SimpleXML, etc) et, bien sûr, de sa structure.

    Où est-il stocké ? En mémoire. Si vous voulez l'enregistrer [dans un fichier] (avant comme après manipulation voir les deux), il vous faut utiliser les méthodes prévues par l'extension utilisée (SimpleXML : asXML, DOM : save, etc).

    Je me suis contenté d'un var_dump pour tester/montrer. Ce n'est pas à moi de tout implémenter (surtout que je n'ai pas les données pour).

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    330
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2009
    Messages : 330
    Points : 93
    Points
    93
    Par défaut
    Citation Envoyé par julp Voir le message
    Hein ?

    La manipulation du document XML après ne dépend que de l'API (DOM, SimpleXML, etc) et, bien sûr, de sa structure.

    Où est-il stocké ? En mémoire. Si vous voulez l'enregistrer [dans un fichier] (avant comme après manipulation voir les deux), il vous faut utiliser les méthodes prévues par l'extension utilisée (SimpleXML : asXML, DOM : save, etc).

    Je me suis contenté d'un var_dump pour tester/montrer. Ce n'est pas à moi de tout implémenter (surtout que je n'ai pas les données pour).
    desole de la question
    j'ai reussi a obtenir un resultat de cette facon :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    	if (!empty($_POST['in'])) {
    		$url = 'http://129.194.19.89/Parser';
    		$contexte = stream_context_create(
    		array(
                    'http' => array(
                        'method' => 'POST',
                        'header' => "User-Agent: PHP5 & DOM/SimpleXML\r\nContent-type: application/x-www-form-urlencoded",
                        'content' => http_build_query($_POST),
                        'max_redirects' => 2,
                        'timeout' => 5,
    		)
    		)
    		);
    		libxml_set_streams_context($contexte);
     
    		//$sxml = simplexml_load_file($url); // Il faudrait tester que $sxml ne vaut pas FALSE ici s'il y a erreur
    		//print_r ($sxml);
     
    		//transformation du xml avec la xsl correspondante
    		$xslDoc = new DOMDocument();
    		$xslDoc->load("../xslt/transformHTML.xsl");
     
    		$xmlDoc = new DOMDocument();
    		$xmlDoc->load($url);
     
    		$proc = new XSLTProcessor();
    		$proc->importStylesheet($xslDoc);
     
    		echo $proc->transformToXML($xmlDoc);
     
     
    		//print_r ($sxml->getName(), (string) $sxml);
    		//var_dump($sxml->getName(), (string) $sxml);
    	} else {
     
    		echo "PROBLEME AVEC LE XML!!";
    		// ...
    	}
    }
    ?>
    je ne sais pas si c'est la methode correcte mais sa fonctionne pour le moment

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

Discussions similaires

  1. Envoi message vers serveur sur port custom
    Par Silvering dans le forum NodeJS
    Réponses: 14
    Dernier message: 19/06/2014, 16h39
  2. Envoi requête vers serveur choisi
    Par smile_88 dans le forum Général Java
    Réponses: 2
    Dernier message: 02/12/2012, 15h11
  3. Envoie requete à un serveur
    Par Invité dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 08/12/2011, 02h59
  4. Envoi fichier vers Serveur FTP.
    Par Fabrice01 dans le forum 4D
    Réponses: 2
    Dernier message: 03/06/2008, 14h15
  5. [PORTLET] Envoie fichier vers serveur
    Par sammm dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 29/11/2006, 10h35

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