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

Plugins PHP Discussion :

Guzzle et caractères spéciaux


Sujet :

Plugins PHP

  1. #1
    Nouveau membre du Club
    Guzzle et caractères spéciaux
    Bonjour,

    J'essaye d'utiliser Guzzle pour faire appel à un webservice.
    Je suis pour l'insant en phase de test/Développement.

    ET j'ai un gros problème quand j'envoie une requete comme ça :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
     $request = $client->get("http://localhost:4040/TEST/query?query= 'SELECT * WHERE {?s ?p ?o .}'");


    et que je fait afficher la requete, (avant envoi donc)
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    dump($request->getUrl());


    j'obtiens ça :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    "http://localhost:4040/TEST/query?query=%20%27SELECT%20%2A%20WHERE%20%27"


    Curieusement guzzle supprime tout ce qui se trouve après le char '{' .

    Une explication, une idée ? question de paramétrage, de traitement de chaine avant envoi ou alors?

    Merci pour vos réponses,

    Pi

  2. #2
    Expert éminent sénior
    essayez en passant le paramètre dans un tableau comme ça par exemple :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    $client->request('GET', 'http://localhost:4040/TEST/query', [
        'query' => ['query' => 'SELECT * WHERE {?s ?p ?o .}']
    ]);

  3. #3
    Nouveau membre du Club
    Il faut utiliser urlencode
    J'ai mis du temps à répondre ...


    Je pense que la soution de passer par un tableau est bonne,
    je l'ai utilisée pour envoyer des variables post...

    Mais la solution que j'ai trouvé pour résoudre ce problème est finalement assez simple.
    Il faut utiliser urlencode

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
            $url = urlencode("SELECT * WHERE {?s ?p ?o .}");
            $request = $client->get("http://localhost:3030/test/query?query=$url");
            $response = $request->send();
            echo $response->getBody();


    En espérant que ça serve...

    Pi