Bonjour,

Pour un projet très sécurisé, je dois faire une connexion tcp et envoyer des identifiants de connexion au format XML.

Le responsable informatique m'a montré la procédure en telnet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
telnet 192.168.3.111 8080
Requete :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<?xml version="1.0" standalone="yes"?>
<message type="pipo">
  <body>
  <id>111111</id>
  <code>22222</code>
  <database>xxxx</database>
  </body>
</message>
exemple de réponse OK :

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
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<message type="response:pipo">
  <body>
  <result>OK</result>
  <number>null</number>
  <civilite>null</civilite>
  <nom>MACHIN</nom>
  <prenom>PAUL</prenom>
  <adresse>null</adresse>
  <bp>null</bp>
  <cp>null</cp>
  <ville>null</ville>
  <pays>null</pays>
  <teldom>null</teldom>
  <telbur>null</telbur>
  <telGSM>null</telGSM>
  <datne>null</datne>
  <numdec>null</numdec>
  <email>null</email>
  <infoInterne>null</infoInterne>
  <infoExterne>null</infoExterne>
  </body>
</message>
exemple de réponse NOK :

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
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<message type="response:pipo">
  <body>
  <result>ERROR</result>
  <number>3</number>
  <civilite>null</civilite>
  <nom>null</nom>
  <prenom>null</prenom>
  <adresse>null</adresse>
  <bp>null</bp>
  <cp>null</cp>
  <ville>null</ville>
  <pays>null</pays>
  <teldom>null</teldom>
  <telbur>null</telbur>
  <telGSM>null</telGSM>
  <datne>null</datne>
  <numdec>null</numdec>
  <email>null</email>
  <infoInterne>null</infoInterne>
  <infoExterne>null</infoExterne>
  </body>
</message>

Je me suis donc tourné vers fsockopen pour reproduire cette requête:

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
 
$data = '<?xml version="1.0" standalone="yes"?><message type="pipo"><body><id>111111</id><code>22222</code><database>xxxx</database></body></message>';
	$length = strlen ($data);
	$fp = fsockopen("tcp://192.168.3.111", 8080, $errno, $errstr, 30);
 
	if (!$fp) {
		echo "ERRROR $errstr ($errno)<br />\n";
	} else {
		fputs($fp, $data);	
		header ("content-type: text/xml");
		while (!feof($fp)) {
			echo fgets($fp, 4096);
		}
		fclose($fp);		
	}
Voici la réponse du serveur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="ISO-8859-1"?>
<message type="response:pipo">
  <body>
  <result>ERROR</result>
  <number>4</number>
  <description>Question inconnue</description>
  </body>
</message>

La connexion fonctionne bien, mais apparemment, le serveur ne comprend pas ma requête, je n'ai pas l'habitude d'utiliser fsockopen, est-ce bien la bonne méthode, sachant que j'ai vu sur le forum des personnes utiliser curl.

Merci pour votre aide.

Cordialement
saturnino