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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Problème Requête HTTP Via URL HTTPS


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Problème Requête HTTP Via URL HTTPS
    Bonjour à tous les pro.
    Je travaille depuis peu sur une application web où j'effectue des Requêtes HTTP pour communiquer avec un serveur distant. Je réussi bien à communiquer via une URL HTTP non sécurisé donc mes requêtes HTTP marchent bien. Mais aujourd'hui je cherche à envoyer ces requêtes via une URL sécurisée(HTTPS) ça plante : erreur sur toutes les fonctions socket que j'appelle.
    Voici ma fonction pour mes requêtes HTTP :

    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
    function requete_http($url, $variables)
    {
    	//pour que la réponse s'affiche comme du texte brut
    	header('Content-Type: text/html');
     
    	$url = parse_url($url);
    	if(isset($url['port'])) {
    	  $port = $url['port'];
    	} else {
    	  $port = 8282;
    	}
     
    	//nom hote du site
    	$name = $url['host'];
     
    	//pour ne pas devoir calculer à la main la longueur du corps, on le stocke dans une variable et la fonction strlen() nous la donne.
    	$data = http_build_query($variables);
     
    	//la requête
    	$envoi  = "POST ".$url['path']." HTTP/1.1\r\n";
    	$envoi .= "Host: ".$name."\r\n";
    	$envoi .= "Connection: Close\r\n";
    	$envoi .= "Content-type: application/x-www-form-urlencoded\r\n";
    	$envoi .= "Content-Length: ".strlen($data)."\r\n\r\n";
    	$envoi .= $data."\r\n";
     
    //création du socket
    	$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    //ouverture socket
    	@socket_connect($socket,gethostbyname($name), $port) OR die('texte qui affiche qu\'une exception est levée');
    	@socket_write($socket, $envoi, strlen($envoi)) OR die('texte qui affiche qu\'une exception est levée');
    //lecture réponse
    	$reception = @socket_read($socket, 2024);
    	while(!preg_match('#^HTTP/1.1#', $reception)) {
    		$reception = socket_read($socket, 2024);
    	}
    	list($http, $reponse, $texte) = explode(" ", $reception, 3);
    	list($ext, $texte) = explode("Connection: close", $texte, 2);
    	socket_close($socket);
     
    	return array($reponse, $texte);
    }
    Nb: J'ai lu quelque part qu'il fallait d'abord activer l'extension OpenSSL sur Wamp(Puisque mon application web est hébergée sur mon ordinateur sous wampserver 2). Je l'ai bien activé et toujours rien! plantage à tous les coups .

    Je vous remercie d'avance pour avoir parcouru ce post et j'espère que vous apporteriez une solution à ce problème.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux etre plus précis que "ca plante" ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Tu peux etre plus précis que "ca plante" ?
    Biensûr que si Sabotage! Et merci pour la remarque. En fait j'ai ce message qui se multiplie sans s'arrêter :

    Warning: socket_read() [function.socket-read]: unable to read from socket [0]: Une connexion existante a d� �tre ferm�e par l'h�te distant. in C:\wamp\www\Free-Vending\includes\fonctions.php on line 130

    Warning: socket_read() [function.socket-read]: unable to read from socket [0]: Une connexion existante a d� �tre ferm�e par l'h�te distant. in C:\wamp\www\Free-Vending\includes\fonctions.php on line 130

    Warning: socket_read() [function.socket-read]: unable to read from socket [0]: Une connexion existante a d� �tre ferm�e par l'h�te distant. in C:\wamp\www\Free-Vending\includes\fonctions.php on line 130
    Je ne sais pas ce dont j'ai besoin pour que je puisse passer l'URL en HTTPS.

    Merci d'avance.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    quelle est l'avantage de ton code par rapport a un simple file_get_contents ou curl ?

  5. #5
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Huuum! Stealth35, c'est juste que file_get_content, CURL etc je comprenais trop et par contre j'arrivais à bien comprendre ce que tu as devant toi. Encore que la POO n'est pas mon fort quoi je l'utilise parfois pour certains module de mon travail. J'ai essayé au depart avec le code ci-après(PEAR) mais j'y arrivais pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    require_once('HTTP/Request.php');	 
    req = &new HTTP_Request('http://pear.php.net:80/package-search.php');
    $req->setMethod(HTTP_REQUEST_METHOD_GET);
    $req->setProxy('proxy.exemple.fr', '3127');
    $req->addRawQueryString('pkg_name=http&bool=AND&submit=Search');
    $req->sendRequest();
     
    echo "<h1>Code retour : ". $req->getResponseCode()."</h1>";
    echo $req->getResponseBody();
    ?>
    Mais si tu as le même code qui pourrais m'aider et me faire avance dans ce sens, je t'en revaudrais ça.

  6. #6
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Je suis exaspéré les gars! Faites quelque chose pour moi les amis. Il y a surement un expert qui a déjà rencontré ce problème. Je vais essayer de résumer en étant d'être un peu plus claire.
    Je souhaite Je souhaite envoyer des requêtes non plus en HTTP comme c'était le cas il y a peu mais en HTTPS, à une servelet. J'ai un collègue qui le fait bien en C-SHARP en générant sa propre clé. Mais moi je ne sais pas comment m'y prendre, du moins ce qu'il faut au préalable pour que la requête puisse aboutir.

    Je te remercie déjà toi qui lis ce message et espère que tu as une solution à mon problème.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t'as eté voire la doc de file_get_contents ou de curl au moins ?

  8. #8
    Candidat au Club
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Salut Stealth36,
    si j'ai lu sur file_get_contents() et j'ai même un autre script de post plus simple(avec des classes) mais quand j'essaye en HTTPS ça ne marche toujours pas.
    C'est dire que via le HTTPS, cela requière autre chose que je cherche à connaître.
    Merci déjà pour ta solution.

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par newsdas Voir le message
    Salut Stealth36,
    si j'ai lu sur file_get_contents() et j'ai même un autre script de post plus simple(avec des classes) mais quand j'essaye en HTTPS ça ne marche toujours pas.
    C'est dire que via le HTTPS, cela requière autre chose que je cherche à connaître.
    Merci déjà pour ta solution.
    t'as quoi comme message d'erreur avec file_get_contents ?
    il demande peu être un certificat local :
    http://www.php.net/manual/fr/context.ssl.php

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/07/2013, 20h12
  2. Problème requête SQL via Wordpress
    Par anto2b dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/08/2012, 23h24
  3. [C#] Problème requête update via OdbcDataAdpter
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 12
    Dernier message: 16/06/2006, 11h52
  4. probléme avec include() via HTTP
    Par schlitters dans le forum Langage
    Réponses: 11
    Dernier message: 07/02/2006, 17h19
  5. Comment envoyer une requête POST via HTTP ?
    Par pdtor dans le forum C++
    Réponses: 2
    Dernier message: 13/09/2005, 05h54

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