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 :

Webservice transfert des POST/GET


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut Webservice transfert des POST/GET
    Bonjour à tous,

    Comment re-balancer toutes les variables POST et GET reçues sur ma page proxy.php (webservice).

    Cette page doit inclure l'URL de destination de mon application serveur (avec un port dans l'URL notamment) qui est sur un domaine différent.

    J'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $toPOST='';
    	while(list($key, $value)=each($_POST)){
    		$$key=$value;
    		$toPOST.=($toPOST=='')?$$key.'='.$value:'&'.$$key.'='.$value;
    	}
    	echo $toPOST;
    Mais $$key ne me donne pas le nom de la variable mais plutôt value=value

    Quelqu'un à une idée pour rebalancer les POST ?
    http_post_data($url, $toPOST); ne fonctionne pas.

    Merci à tous

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    pk tu utilises pas juste $key tout simplement la ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $toPOST='';
    foreach($_POST as $cle => $valeur)
    {
    $toPOST.=($toPOST=='')?$cle .'='.$valeur:'&'.$cle.'='.$valeur;
    }
    echo $toPOST;
    et là tu les "rebalances" en GET

  3. #3
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Ok niquel, par contre, je n'ai pas le droit de les balancer en GET.
    Le dév de l'appli serveur va devoir modifier toutes les procédures..
    On s'était mis d'accord sur ce protocole d'échanges de données en GET et en POST pour une procédure donnée (chaque).

    J'include le chemin du serveur en lui passant les GET en fin de script
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include "http://server.domain.com:222/?get1=val1&get2=val2"; ?>
    Comment lui passer mes POST ?

    Une méthode barbare serait de reconstruire un formulaire et de le soumettre sur le OnLoad mais je l'exclue.

    Je viens de faire un test avec une page test.php au lieu de mon appli serveur..
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $toPOST='';
    foreach($_POST as $cle => $valeur){
    	$toPOST.=($toPOST=='')?$cle .'='.$valeur:'&'.$cle.'='.$valeur;
    }
     
    $toGET='';
    foreach($_GET as $cle => $valeur){
    	$toGET.=($toGET=='')?$cle .'='.$valeur:'&'.$cle.'='.$valeur;
    }
     
    echo 'POST : '.$toPOST.'
    GET : '.$toGET;
    ?>

    Firebug me répond bien mes POST et mes GET (en tant que responseText) donc l'include suffit à rendre accessible ces variables par mon appli.
    Je vois donc pas où ça coince..

  4. #4
    Membre confirmé Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Points : 455
    Points
    455
    Par défaut
    Citation Envoyé par moi-même
    l'include suffit à rendre accessible ces variables par mon appli
    Faux !
    Pour je ne sais quelle raison, PHP coupe les headers HTTP après la première ligne. (ayant analysé les informations entrantes sur mon appli serveur)
    Les POST n'arrivent donc pas chez mon appli.

    En configurant IE pour faire du cross domain, tout passe bien. Ca coince au niveau de proxy.php par déduction.

    Une idée ?
    PS : cela vaut aussi bien pour uniquement du simple POST vers une appli serveur car je fais :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include "http://server.domain.com:222/?".$toGET; ?>
    Contrairement au test de mon post précédent, PHP n'a pas de mal. Récupère t-il tous les headers HTTP ? en a t-il besoin ?

  5. #5
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Bonjour a tous

    Comment re-balancer toutes les variables POST et GET reçues sur ma page proxy.php
    Allo Houston la communication est bzzii...

    Peut etre que ce code pourrais te donner un element de réponse.
    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
     
    <?php
    //$URL=$_GET['url'];// 'http://server.domain.com'
    //unset($_GET['url']);
     
    $GET_DATA = http_build_query($_GET);
    $POST_DATA = http_build_query($_POST);
     
    $context_options = array (
            'http' => array (
                'method' => 'POST',
                'header'=> "Content-type: application/x-www-form-urlencoded\r\n"
                ."Content-Length: " . strlen($POST_DATA) . "\r\n",
                'content' => $POST_DATA
                )
            );
     
    $context = context_create_stream($context_options)
    $fp = fopen('http://server.domain.com:222/?'.$GET_DATA, 'r', false, $context);
    fpassthru($fp);
    fclose($fp);
    ?>

Discussions similaires

  1. Lire des data POST / GET sur serveur HTTP
    Par rems033 dans le forum Débuter
    Réponses: 2
    Dernier message: 27/12/2010, 19h32
  2. [getRequestDispatcher] de post à get (et vice versa)
    Par Kimael dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 21/11/2008, 09h36
  3. [Prototype] Prototype Window gestion des requêtes GET et POST
    Par frankeedia@mac.com dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 20/06/2007, 17h32
  4. interrogation des postes à distance?
    Par just1980 dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 05/06/2004, 01h09

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