IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

question sur le HttpWebRequest


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 46
    Points : 40
    Points
    40
    Par défaut question sur le HttpWebRequest
    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

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    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

    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());
            }
        }
    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.

    Voilà

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bonjour,
    je me permet de poster içi un "problème/question" que je rencontre en ce moment.
    J'ai ce fichier XML :
    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 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
    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());
    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
     
    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>
    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 !

    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

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    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é.

Discussions similaires

  1. [debutant] Questions sur 1 futur projet
    Par cyrull22 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 28/04/2003, 21h49
  2. Quelques questions sur le TWebBrowser...
    Par CorO dans le forum Web & réseau
    Réponses: 3
    Dernier message: 17/01/2003, 21h23
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo