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 :

Envoie de formulaire web avec C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 6
    Par défaut Envoie de formulaire web avec C#
    Bonjour à tous,

    J’ai un produit qui intègre un serveur web. Les pages sont en HTML avec du JavaScript, rien de plus.

    Ces pages servent à paramétrer le produit (un peu comme un routeur), les requêtes sont des « submit » de formulaires.

    Pour automatiser le réglage des produits il faudrait que je génère les requêtes avec une appli en C#. (En même temps Je dois piloter des instruments de mesures par GPIB et garder une trace de tous les paramètres que j’envoie).

    Je ne sais pas si le C# est le plus adapté, mais c’est le langage dans lequel je suis le moins perdu ….

    Est-ce que les submit de formulaire sont en fait des requêtes http ?
    J’ai trouvé ca :
    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
    44
    45
    46
    47
    48
    49
    50
        * using System;
        * using System.Net;
        * using System.IO;
        *
        * namespace Http
        * {
        * class Requete
        * {
        * [STAThread]
        * static void Main(string[] args)
        * {
        * string Data = "Mes données\r\n";
        * string Reponse = String.Empty;
        * StreamWriter Sw = null; // Pour écrire les données
        * StreamReader Sr = null; // Pour lire les données
        *
        * try
        * {
        * HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("Mon Uri");
        * Req.Method = "Ma méthode"; // POST ou GET
        * Req.Referer = "Mon referer";
        * Req.ContentType = "application/x-www-form-urlencoded"; // La plupart du temps
        * Req.ContentLength = Data.Length; // La longueur des données
        *
        * Sw = new StreamWriter(Req.GetRequestStream());
        * Sw.Write(Data); // On écrit les données
        * Sw.Close(); // Puis on ferme le flux
        * Sw = null;
        *
        * Sr = new StreamReader(((HttpWebResponse)Req.GetResponse()).GetResponseStream());
        * Reponse = Sr.ReadToEnd(); // On choppe la réponse
        * Sr.Close(); // Et on ferme
        * Sw = null;
        * }
        * catch(Exception e) // En cas d'exception
        * {
        * if(Sw != null) // Si le flux est ouvert, on le ferme
        * Sw.Close();
        * if(Sr != null)
        * Sr.Close();
        *
        * Console.WriteLine(e.Message + "\r\n\r\nL'application va maintenant se terminer...");
        *
        * return;
        * }
        *
        * Console.WriteLine(Reponse);
        * }
        * }
        * }
    http://www.developpez.net/forums/d82...ance-page-web/
    Mais ca a l’air de générer une requête avec uniquement l’adresse web (avec des variable php ..) Est-ce que je me trompe ?

    En fait je fais appel à vous pour me diriger dans la bonne direction. Je maitrise le C par contre le C++ et C# ne me sont pas inconnu, mais je suis loin d’être un expert …

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par neylud Voir le message
    Est-ce que les submit de formulaire sont en fait des requêtes http ?
    Oui

    Citation Envoyé par neylud Voir le message
    Mais ca a l’air de générer une requête avec uniquement l’adresse web (avec des variable php ..) Est-ce que je me trompe ?
    Dans les exemples que tu montres, les variables sont passées dans l'URL (méthode GET). Mais tu peux aussi les passer en POST (propriété Method de HttpWebRequest), en écrivant les valeurs dans le flux de la requête. Un truc comme ça devrait faire l'affaire :

    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
                HttpWebRequest req = WebRequest.Create("http://site/le/chemin/du/formulaire.php") as HttpWebRequest;
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                using (Stream reqStream = req.GetRequestStream())
                using (StreamWriter writer = new StreamWriter(reqStream))
                {
                    writer.Write("variable1=valeur1&variable2=valeur2");
                }
                using (HttpWebResponse resp = req.GetResponse() as HttpWebResponse)
                {
                    if (resp.StatusCode == HttpStatusCode.OK)
                    {
                        ...
                    }
                }

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 6
    Par défaut
    Merci pour cette réponse éclaire et claire ^^ (désolé.. j’ai pas pu m’empêcher )

    Je suis rassuré sur la faisabilité de la chose, ca n’a pas l’air trop lourd. J’ai réussi à compiler un bout code. « yapluka » le mettre au point. Je reviendrai surement vous embêter quand on me laissera le temps de faire ce projet.

    Encore merci ~~

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 6
    Par défaut
    Rebonjour,

    Je reviens vers vous car je re-bloque sur mon soft. Je me suis fait une dll qui fonctionne bien. J’ai basculé sur la version .Net2.0 . Car VEE semble tourner dessus. Du coup j’ai viré les référence à System.Linq; System.Xml.Linq; et System.Data.DataSetExtensions ; qui sont incconnu en version 2.0.

    Je ne suis pas vraiment sur le bon forum car je n’ai pas de soucis avec Visual Studio, mon problème est l’utilisation de la dll avec ce logiciel VEE. Je continue la discussion en faite …

    En important l’assembly sous VEE la fonction simplisme ReceiveMsg qui retourne la chaine « pouet » fonctionne. Par contre la fonction plus intéressante : SendWebRequestme retourne la page html dans une string après requete.
    C’est cette fonction qui me sort une erreur de permission :




    J’ai trouvé quelques sites qui parlent d’aller modifier les config dans C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG
    Mais j’ai pas trouvé mon bonheur.

    Avec une appli console l'appel a cette fonction ne génère pas d'erreur.

    Si vous avez une idée ... Sinon je prendrai la solution facile. Càd compiler un .exe qui écrira le résultat dans un fichier texte, ou qui me l’envoie par socket …

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    si ton appli / dll est hébergé au sein de IIS utilisant la runtime ASP.NET alors c'est tout à fait normal, et le fait que ton code à toi soit en dotnet 3.5 ne changera rien au fait que la lib soit écrite en dotnet 2.0, car il n'y a pas de changement de CLR.

    ton problème est inhérent à la sécurité. je sais j'enfonce les portes ouvertes, c'est marqué dedans...
    oui et non, je m'explique, une appli console démarre avec tes droits à toi, donc par défaut elle peut faire ce que tu peux faire toi même...
    sous ASP.NEt l'appli démarre avec les droits du pool d'application sous laquelle elle tourne et des droits de IIS...
    il faut définir le type de niveau de confiance de ce site en full trust (internal)

    dans ton cas tu es face aux problème des crossdomains probablement...
    tu ne peux pas aller chercher n'importe oà ce que tu veux sinon tu te fait jeter.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 6
    Par défaut
    Citation Envoyé par cinemania Voir le message
    Que ton code à toi soit en dotnet 3.5 ne changera rien au fait que la lib soit écrite en dotnet 2.0, car il n'y a pas de changement de CLR. .
    Là où je n’ai pas compris c’est que System.Net c’est du 3.5. J’ai compilé mon appli en 2.0. Et pourtant ca marche, je ne dois pas être réellement en 2.0 … je ne sais pas. Pas de changement CLR ok mais il accède quand même a des trucs (désolé pour la précision) en 3.5, non ?
    Citation Envoyé par cinemania Voir le message
    Il faut définir le type de niveau de confiance de ce site en full trust (internal) .
    Comment je fais ca ? J’ai pas trouvé sur mon PC la plupart des endroits mentionné sur internet, du genre : Panneau de configuration > Outils d’administration > Microsoft .NET Framework Configuration. Puis, même si ca marche après avoir configurer « à la mano » . Il faudrait que je trouve un moyen de le configurer par le biais de VEE genre par un .bat ou exe (peu importe) pour avoir les droits.

    Pour l’instant … je laisse tomber, j'ai déjà passé trop de temps là dessus. Je vais me faire un .exe qui me prends en paramètre mes variables et qui m’écrit dans un fichier texte les infos que je cherche (au moins je maitrise ce que je fait). A moins que quelqu’un a une idée pour faire une requête web en 2.0. J’ai lu quelque part qu’il n’y avait pas ces gestions de droit.

    Edit : j'ai trouvé : appcmd set config /commit:WEBROOT /section:trust/level:Full
    mais je vois pas comment l'utiliser
    http://technet.microsoft.com/fr-fr/l...8WS.10%29.aspx

    ET C:\Windows\System32\inetsrv est vide sur mon PC ???

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi de formulaire possible avec PHPMailer ?
    Par CedEsc dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 11/04/2011, 10h20
  2. Formulaire web avec aspx
    Par jkamelin dans le forum Débuter
    Réponses: 1
    Dernier message: 22/07/2009, 11h07
  3. valider un formulaire WEB avec Entrée
    Par quelcun.max dans le forum W4 Express
    Réponses: 1
    Dernier message: 19/03/2008, 10h30
  4. Valider formulaire web avec fsockopen
    Par madislak dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2008, 00h30
  5. remplir un formulaire Web avec delphi
    Par lassmust dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/04/2006, 18h36

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