Aller au contenu

Problème de sockets


bensor

Messages recommandés

Salut à tous.

Bon voilà, je rencontre un problème en PHP et je sèche totalement. Le but du code : envoyer un fichier XML via un socket en SSL vers un script sur un autre serveur. Evidemment, faire un fsockopen() suivi d'un fputs bête et méchant du fichier XML aurait été très simple. Le problème est que je recontre une petite erreur (php_network_getaddresses: getaddrinfo failed: Name or service not known) qui ne peut être résolue que par la modification des DNS du serveur ou du fichier /etc/hosts. J'ai donc décidé d'envoyer le contenu du fichier XML via une requête POST en HTTP. Voici le code qui fait cela (les URL ont été modifiées bien sûr) :

$fp = fsockopen("ssl://www.sitebidon.com", 443, $errno, $errstr, 30);

if (!$fp) {
  echo "$errstr ($errno)<br />\n";
} else {
$out = "POST /sousdossier/fichier HTTP/1.1\r\n";
$out .= "Content-Type : application/xml\r\n";
$out .= "Connection : keep-alive\r\n";
$out .= "Host: www.sitebidon.com\r\n";
$out .= "\r\n";
$out .= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
$out .= "<balises>";
$out .= "<balise>";
$out .= "<contenu>123</contenu>";
$out .= "</balise>";
$out .= "</balises>";

fwrite($fp, $out );

while ( !feof( $fp ) ) {
	echo '<pre>';
	echo fgets( $fp, 1024 ).'<br />';
	echo '</pre>';	
}

fclose( $fp );
}

Quand le script du serveur distant ne reçoit rien, il retourne "KO". Or, c'est ce 'KO' qui est affiché à l'issue de ce script. Quelqu'un voit-il où j'ai pu me planter ?

Lien vers le commentaire
Partager sur d’autres sites

$fp = fsockopen("ssl://www.sitebidon.com", 443, $errno, $errstr, 30);

Quand le script du serveur distant ne reçoit rien, il retourne "KO". Or, c'est ce 'KO' qui est affiché à l'issue de ce script. Quelqu'un voit-il où j'ai pu me planter ?

en virant ssl:// ?

pas d'erreur, mais pas de retour non plus...enfin ça me retourne du vide en fait. Normallement je devrais au moins avoir l'en-tête HTTP de retour du serveur, là que dalle :s

EDIT : Je viens de faire un GET en suivant cette modification, aucun retour non plus.

Lien vers le commentaire
Partager sur d’autres sites

Euh, et en mettant https:// au lieu de ssl:// ?

On m'a dit que ce n'était pas un protocole compatible avec fsockopen, même après que j'ai insisté très lourdement. J'ai essayé, mais il ne connait pas ce protocole (alors que file_get_contents() le connait très bien, allez comprendre...)

Lien vers le commentaire
Partager sur d’autres sites

dans le bout de code original, que contiennent errno et errstr ?

Avant de commencer à faire les modifs de ce sujet = errno : 10983, errstr : rien. Pas la peine de cherche ce que signifie ce 10983 sur google, seuls les chinois en parlent.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...