Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/01/2011, 11h16   #1
Invité de passage
 
Inscription : janvier 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 7
Points : 0
Points : 0
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 :
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.
newsdas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 11h27   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Tu peux etre plus précis que "ca plante" ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 10h08   #3
Invité de passage
 
Inscription : janvier 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 7
Points : 0
Points : 0
Citation:
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 :

Citation:
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.
newsdas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 10h26   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
quelle est l'avantage de ton code par rapport a un simple file_get_contents ou curl ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 10h40   #5
Invité de passage
 
Inscription : janvier 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 7
Points : 0
Points : 0
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 :
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.
newsdas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 08h36   #6
Invité de passage
 
Inscription : janvier 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 7
Points : 0
Points : 0
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.
newsdas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 10h26   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
t'as eté voire la doc de file_get_contents ou de curl au moins ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 16h52   #8
Invité de passage
 
Inscription : janvier 2009
Messages : 7
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 7
Points : 0
Points : 0
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.
newsdas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2011, 16h55   #9
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h08.


 
 
 
 
Partenaires

Hébergement Web