slt all
comment je peus passer une information de tupe Date on utilisant l'objet HttpWebRequest en c#
je veux que le client recupere la donne sous forme de Date et non string
thx
slt all
comment je peus passer une information de tupe Date on utilisant l'objet HttpWebRequest en c#
je veux que le client recupere la donne sous forme de Date et non string
thx
Tu ne peux pas. Qu'est-ce qu'une HttpWebRequest? C'est une requête http basée précisément sur le protocole HTTP or le protocole HTTP ça ressemble à ceci (de mémoire)
HTTP 1.0
POST /...url
Host: ....
Content-Type:....
Content-Lengthx
Connection: Close\r\n\r\n
variable1=valeur&variable2=valeur....
Et donc, tout le flux transmis l'est exactement comme tu le ferais dans une URL quelle que soit la méthode (GET ou POST). Il n'est donc pas possible de typer tes arguments. La classe HttpWebRequest ne fait que générer la requête HTTP telle qu'illustrée ci-dessus, elle n'a pas le choix puisqu'elle doit respecter le protocole.
Je t'ai fait un petit exemple, un prog console qui envoie une donnée en POST à une page web et qui lit ensuite sa réponse. La page Web reçoit la date et la converti et ensuite renvoie la réponse juste pour bien voir que ça fonctionne correctement
Le petit prog console
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; namespace ConsoleWebRequest { class Program { static void Main(string[] args) { try { byte[] DateToPass = System.Text.ASCIIEncoding.ASCII.GetBytes("DateToPass=" + DateTime.Now.ToString()); HttpWebRequest Request = (HttpWebRequest)WebRequest.Create("http://localhost:2088/js/Default.aspx"); Request.Method = "POST"; Request.ContentType = "application/x-www-form-urlencoded"; Request.ContentLength = DateToPass.Length; Stream RequestStream = Request.GetRequestStream(); // Send the data. RequestStream.Write(DateToPass, 0, DateToPass.Length); HttpWebResponse RequestResponse = (HttpWebResponse)Request.GetResponse(); Stream ResponseStream = RequestResponse.GetResponseStream(); StreamReader ResponseReader = new StreamReader(ResponseStream); Console.Write("Answer = " + ResponseReader.ReadToEnd()); RequestStream.Close(); } catch (IOException IoEx) { Console.WriteLine(IoEx.Message); } catch (WebException WebEx) { Console.WriteLine(WebEx.Message); } Console.Read(); } } }
Le code de la page web. J'ai tout viré (le formulaire etc...), je n'ai mis que ceci dans le code behind
Là, tu vois bien que j'ai pu convertir en date réelle le string que j'ai reçu et j'aurais donc pu l'utiliser en tant que date par la suite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 protected void Page_Load(object sender, EventArgs e) { if (Request.Params["DateToPass"] != null) { DateTime InputDate = Convert.ToDateTime(Request.Params["DateToPass"]); Response.Write(InputDate.ToString()); } }
Voilà
Bonjour,
je me permet de poster içi un "problème/question" que je rencontre en ce moment.
J'ai ce fichier XML :
et j'utilise le code suivant pour l'envoyer vers le serveur https :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="utf-8" standalone="yes"?> <DONNEES>Ecole primaire <CLASSE niveau="CM2"> <ELEVE sexe="Garçon"> <NOM>Dupond</NOM><PRENOM>Marc</PRENOM><AGE>10.5</AGE><MOYENNE>14.5</MOYENNE> </ELEVE> <ELEVE sexe="Fille"> <NOM>Dipsy</NOM><PRENOM>Laura</PRENOM><AGE>10</AGE><MOYENNE>18.5</MOYENNE> </ELEVE> <EFFECTIF>2</EFFECTIF> </CLASSE> </DONNEES>
et voiçi le message du Response :
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
25
26 string p_strURI = @"https://r.../receive"; HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(new Uri(p_strURI)); NetworkCredential credentials = new NetworkCredential("M...FR", "...."); CredentialCache cache = new CredentialCache(); cache.Add(new Uri(p_strURI), "Basic", credentials); myHttpWebRequest.Credentials = cache; myHttpWebRequest.Method = "POST"; #region text/xml myHttpWebRequest.ContentType = "text/xml; charset=utf-8"; StreamReader v_streamReader = new StreamReader(@"C:\tmp\appHTTPSPost\appHTTPSPost\toto.xml", System.Text.Encoding.UTF8); string v_strx = v_streamReader.ReadToEnd(); UTF8Encoding encoding = new UTF8Encoding(); byte[] byte1 = encoding.GetBytes(v_strx); myHttpWebRequest.ContentLength = byte1.Length; Stream newStream = myHttpWebRequest.GetRequestStream(); newStream.Write(byte1, 0, byte1.Length); #endregion HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse(); Stream receiveStream = response.GetResponseStream(); StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); Console.Write("Response stream received : "); Console.WriteLine(response.ContentType + " " + response.ContentEncoding); Console.WriteLine(readStream.ReadToEnd());
Le souci c'est que les gens qui ont accès au serveur me disent que ce qu'il récupère n'est pas un fichier xml et donc pas utilisable !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 The value of 'ContentLength' property after sending the data is 437 Response stream received : text/xml <?xml version="1.0" encoding="UTF-8"?> <Values version="2.0"> <record name="TN_parms" javaclass="com.wm.util.Values"> <value name="$contentType">text/xml</value> <value name="$contentEncoding">utf-8</value> </record> </Values>
De mémoire (ayant lu des tuto sur ce sujet) je sais qu'il faut que la web méthode doit recoder les informations pour en faire un fichier xml ??
Est-ce que je me trompe ? Mon code C# a un problème ?
Merci d'avance
Oui il faut bien que tu fasses un truc dans le genre, par contre je ne sais pas où est le problème dans le code.
Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager