Jump to content

Problème de sockets


Recommended Posts

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 ?

Link to comment
Share on other 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.

Link to comment
Share on other 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...)

Link to comment
Share on other 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.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...