Envoi de données en XML dans une socket
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:
1 2
|
telnet 192.168.3.111 8080 |
Requete :
Code:
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:
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:
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:
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:
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