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

ASP.NET Discussion :

[3.5 C#] création et submit d'un formulaire html côté serveur


Sujet :

ASP.NET

  1. #1
    CUCARACHA
    Invité(e)
    Par défaut [3.5 C#] création et submit d'un formulaire html côté serveur
    Salut,

    Je dois poster un formulaire vers un serveur sachant que le formulaire doit contenir un champ token qui est un jeton de sécurité secret.

    Ne voulant pas le faire apparaître sur le formulaire lorsqu'on affiche la source, j'aimerais faire une sorte de server.transfert mais j'ai noté que ça ne fonctionnait pas vers une url externe.

    Quelle solution me préconiseriez-vous ?

    D'avance merci

    Laurent

  2. #2
    CUCARACHA
    Invité(e)
    Par défaut Bon, j'ai trouvé...
    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 token = "xxxxxxxxxxxxxxxx";
     
                string url = "http://yyyyyyyyyy/zzzzzz.yyy";
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                string proxy = null;
     
                string data = String.Format("param1={0}&param2={1}&tokenid={2}", Server.UrlEncode(txtParam.Text.Trim()), Server.UrlEncode(txtParam2.Text.Trim()), Server.UrlEncode(token.Trim()));
                byte[] buffer = Encoding.UTF8.GetBytes(data);
     
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.ContentLength = buffer.Length;
                req.Proxy = new WebProxy(proxy, true); 
                req.CookieContainer = new CookieContainer(); // enable cookies
     
                Stream reqst = req.GetRequestStream(); 
                reqst.Write(buffer, 0, buffer.Length);
                reqst.Flush();
                reqst.Close();
     
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();
     
                Stream resst = res.GetResponseStream();
                StreamReader sr = new StreamReader(resst);
                string response = sr.ReadToEnd();
    Au cas où si ça peut servir à quelqu'un

    ++

    Laurent

  3. #3
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,

    Ok, c'est une requête Http, mais ça ne dit pas comment tu fais circuler le token entre le client et le serveur. Tes clients ont tous le même token?

    A+

    Sinon, les "Stream", je les mettrai dans des "using".
    "Winter is coming" (ma nouvelle page d'accueil)

  4. #4
    CUCARACHA
    Invité(e)
    Par défaut
    Pour les tokens, je n'ai pas encore décidé. J'ai posé la question à mon fournisseur, il m'a dit que je pouvais faire les deux.
    Pour éviter qu'un client ne bouffe les minutes d'un autre, je crois que je vais utiliser un token par client.

    Pour le code c'est une maquette.

    ++

    Laurent

  5. #5
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par Laurent Jordi Voir le message
    Pour éviter qu'un client ne bouffe les minutes d'un autre, je crois que je vais utiliser un token par client.
    C'est un service qui se consomme à la minute?
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    CUCARACHA
    Invité(e)
    Par défaut
    A la seconde avec un minimum de 30 secondes. Il s'agit de services telecom.

  7. #7
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    J'imagine qu'une variable en session sera plus sécurisée alors.

    Tiens, je te prête ce bout de code:
    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
    public static string PostRequest(Uri uri, string text, bool waitResponse)
    {
        byte[] bits = Encoding.UTF8.GetBytes(text);
        byte[] buffer = new byte[2048];
     
        HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(uri);
        httpReq.Method = "POST";
        httpReq.ContentLength = bits.Length;
        httpReq.ContentType = "application/x-www-form-urlencoded";
     
        using (MemoryStream ms = new MemoryStream(bits)) // Put data in memory
        {
            using (Stream stream = httpReq.GetRequestStream()) // Open request stream
            {
                int block;
                while ((block = ms.Read(buffer, 0, buffer.Length)) > 0) // Read a memory chunck of buffer size. Write it to the buffer.
                {
                    stream.Write(buffer, 0, block); // Write buffer to stream
                }
            }
        }
     
        if (waitResponse)
        {
            HttpWebResponse resp = (HttpWebResponse)httpReq.GetResponse();
            using (Stream stream = resp.GetResponseStream())
            {
                using (StreamReader sr = new StreamReader(stream))
                {
                    return sr.ReadToEnd();
                }
            }
        }
        else
        {
            return null;
        }
    }
    En faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PostRequest(new Uri("http://localhost:51920/MonWebServices.asmx/HelloWorld"), "hello=Immobilis", true)
    Sur un Web service comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [WebMethod(Description="Hello parameter")]
    public string HelloWorld(string hello)
    {
        return string.Format("Hello {0}", hello);
    }
    J'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="utf-8"?>
    <string xmlns="http://www.monsite.com/">Hello Immobilis</string>
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

Discussions similaires

  1. <html:submit> d'un formulaire
    Par DanZzz dans le forum Struts 1
    Réponses: 3
    Dernier message: 07/06/2006, 17h10
  2. deux bouton submit dans même formulaire
    Par sansouna24 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/05/2006, 12h03
  3. plusieurs boutons submit sur un formulaire
    Par clement42 dans le forum Struts 1
    Réponses: 1
    Dernier message: 12/05/2006, 11h42
  4. Un submit pour plusieurs formulaires
    Par beufa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/11/2005, 16h51
  5. [Word] Création d'un champs de formulaire
    Par Oberown dans le forum Word
    Réponses: 2
    Dernier message: 18/04/2005, 12h10

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