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 :
Requete :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2telnet 192.168.3.111 8080
exemple de réponse OK :
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 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>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>
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:
Voici la réponse du serveur:
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); }
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
Partager