Bonjour,
je développe actuellement un programme permettant d'envoyer des informations à un fichier PHP qui se trouve sur un serveur.
Ce fichier génère du XML en fonction des informations envoyées, puis mon programme récupère le XML.
problème : impossible de lire ce fameux fichier une fois écrit.
Voici mon code :
voici la fonction de ma classe XML :
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 public void envoiRequete() { byte[] vars = Encoding.ASCII.GetBytes("os=7&archi=64&SP=1&version=0.1"); // Configuration de la requête (URL, méthode, etc) WebRequest request = WebRequest.Create("https://XXX.XXX.com:443/monFichier.php"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = vars.Length; // Ecriture des données Stream dataStream = request.GetRequestStream(); dataStream.Write(vars, 0, vars.Length); dataStream.Close(); XML test = new XML(); test.traitementXML();
et enfin, voici mon fichier php :
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 public bool traitementXML() { try { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("https://XXX.XXX.com:443/monFichier.php"); XmlNodeList xnList = xmlDoc.SelectNodes("/noeudParent/sousNoeud/sousSousNoeud"); foreach (XmlNode xn in xnList) { Console.WriteLine("informationAttendue = "+ xn["informationAttendue"].InnerText); } Console.WriteLine("ca marche"); return true; } catch { Console.WriteLine("erreur"); return false; } }
Code php : 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 <?php try { //connection $bdd = new PDO('mysql:host=localhost;dbname=nomDeMaBDD', 'nomUtilisateur', 'monMotDePasse'); //requete $req = "SELECT * FROM maTable "; $res = $bdd->query($req); //CREATION DU DOCUMENT XML //debut $dom = new DOMDocument('1.0', 'utf-8'); header('Content-Type: application/xml'); header("Cache-Control: no-cache, must-revalidLogicielate"); header("Expires: Mon, 10 Jul 1990 05:00:00 GMT"); //creation du noeud parent $root = $dom->createElement("noeudParent"); $root->setAttribute("version", "1.0"); $root = $dom->appendChild($root); $sousNoeud = $dom->createElement("sousNoeud"); $sousNoeud = $root->appendChild($sousNoeud); //sousSousNoeud $sousSousNoeud = $dom->createElement("sousSousNoeud"); $sousSousNoeud = $sousNoeud->appendChild($sousSousNoeud); //fin while($tab_res = $res->fetch()) { if($tab_res['os']==$_POST['os']) { if($tab_res['archi']==$_POST['archi']) { switch($_POST['SP']) { case 1 : if($tab_res['version']!=$_POST['version']) { $text_version = $dom->createTextNode($tab_res['lien']); $text_version = $sousSousNoeud->appendChild($text_version); } break; case 2 : if($tab_res['version']!=$_POST['version']) { $text_version = $dom->createTextNode($tab_res['lien']); $text_version = $sousSousNoeud->appendChild($text_version); } break; case 3 : if($tab_res['version']!=$_POST['version']) { $text_version = $dom->createTextNode($tab_res['lien']); $text_version = $sousSousNoeud->appendChild($text_version); } break; case 4 : if($tab_res['version']!=$_POST['version']) { $text_version = $dom->createTextNode($tab_res['lien']); $text_version = $sousSousNoeud->appendChild($text_version); } break; } } } } echo $dom->saveXML(); $bdd = null; } catch (Exception $e) { echo 'erreur de connection à la base de donnée : ', $e->getMessage(), "\n"; } ?>
Je me suis demandé si le problème ne venait pas du fait que j'écris puis envoi mes informations, et les lis juste après (peut être que la lecture ne se fait pas parce que l'écriture n'est pas fini ?...).
bref, je suis perdu ^^
merci à l'avance
P.S. : merci de ne pas tenir compte du "manque de logique" de mon code PHP (surtout au niveau du switch) c'est un test.
Partager