newsdas
Messages postés4Date d'inscriptionlundi 24 novembre 2008StatutMembreDernière intervention 8 janvier 2011
-
8 janv. 2011 à 11:28
cs_kappo
Messages postés4Date d'inscriptionlundi 25 janvier 2010StatutMembreDernière intervention19 février 2013
-
2 févr. 2011 à 10:30
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 :
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
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 8 janv. 2011 à 19:42
Salut,
En effet il va falloir activer OpenSSL... mais dans le but de l'utiliser. Ici tu envoie toujours tes requêtes en clair sur ta socket, ce qui n'est pas ce que tu veux. Bref, soit tu te coltine l'utilisation des fonction OpenSSL en plus de ta socket, soit tu utilises Curl qui te permet de facilement gérer tes requêtes, y compris en SSL.