Annonce

Réduire
Aucune annonce.

[C#] Problèmes avec WebRequest

Réduire
X
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • [C#] Problèmes avec WebRequest

    Bonjour,

    J'essaye actuellement d'envoyer des requêtes sur des sites pour m'entraîner mais je rencontre un problème.

    Code:
                WebRequest request = WebRequest.Create("http://lc.cx");
                ((HttpWebRequest)request).UserAgent = ".NET Framework Example Client";
                request.Method = "POST";
                
    
                string postData = "form_build_id=form-937uDmgKVv1q1aspc1o47JemFNWb55xtOWlnsGcQ9P4 &form_id=shurly_create_form &long_url=http://google.com &op=Raccourcir";
                byte[] byteArray = Encoding.ASCII.GetBytes(postData);
    
    
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = byteArray.Length;
    
                Stream dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
    
    
                WebResponse response = request.GetResponse();
                dataStream = response.GetResponseStream();
    
               // MessageBox.Show(((HttpWebResponse)response).StatusDescription);
                StreamReader reader = new StreamReader(dataStream);
                string responseFromServer = reader.ReadToEnd();
                richTextBox1.Text = responseFromServer; 
                reader.Close();
                dataStream.Close();
                response.Close();
    Le code html que je récupère après ma requête est le même que avant l'envoie de ma requête.
    Aussi, quand je compile mon programme et que j'exécute le code, le programme rencontre une erreur et se bloque, mais si je le relance après là ça fonctionne, pourquoi?

    Merci !

  • #2
    Je ne suis pas certain de te comprendre.

    Tu dis que le code que tu reçois après la requête est le même que avant mais comment peux tu savoir quel était ce code sans avoir envoyé la requête ?

    Concernant ton erreur, ne serait-ce pas un truc du genre "L'opération n'a pas pu être terminée" ?
    J'ai souvent eu cette erreur avec VisualStudio et comme tu codes en C# ...

    Commentaire


    • #3
      C'est grâce à cette ligne que la requête s'envoie non ? dataStream.Write(byteArray, 0, byteArray.Length); ?
      Le code source après la requête je reçois ceci :



      Mais il est identique au code de base du site, comme si la requête ne s'envoyait pas.

      Commentaire


      • #4
        D'après moi, la requête s'envoie à cette ligne :
        WebResponse response = request.GetResponse();

        Si tu reçois une réponse c'est que la requête a été envoyée et que tu en vois le résultat non ?
        Ou alors penses tu que c'est ton POST qui ne fonctionne pas ?

        Commentaire


        • #5
          Avec la ligne MessageBox.Show(((HttpWebResponse)response).StatusDescription); je reçois la réponse "OK" c'est que la requête s'envoie, mais après je demande le code source de la page après la requête mais il est identique au code source de la page de base...

          Commentaire


          • #6
            En faisant ça, ce que tu vois, avec ton OK, c'est que tu as bien reçu la réponse et que celle-ci a un code de retour OK, c'est tout.
            Il est implicite de dire que cela montre que la requête s'est bien envoyée mais ce n'est pas le but premier.

            Ce que je ne comprends pas c'est pourquoi tu veux que la page soit différente.
            A cause de tes informations en POST ? Es tu certain qu'elles sont bien encodées ?

            Commentaire


            • #7
              Je veux en fait envoyer une url sur le site http://lc.cx pour qu'elle soit réduite (il y a une API mais j'aimerais savoir le faire avec WebRequest), en recevant l'url le code se modifie et je comptais récupérer l'url "réduite" dans le code source après l'envoie de la requête.

              Commentaire


              • #8
                Je vois.

                Concernant ton postData :
                1. Pourquoi as tu des espaces avant tes &
                2. Quel est l'élément pseudo-aléatoire dedans, ne serait ce pas lui qui bloque ?
                3. Es tu certain de ta méthode d'encodage des post ?

                Commentaire


                • #9
                  Je mets des "&" simplement car c'est ainsi pour mettre plusieurs valeurs (http://openclassrooms.com/courses/les-requetes-http).
                  Je viens d'essayer d'envoyer une requête avec l'addon de Chrome Postman et ça fonctionne (je vois bien le lien raccourci dans le code)



                  Donc je présume qu'il y a un programme au niveau de l'encodage mais pourtant j'ai utilisé le code utilisé sur MSDN..

                  Commentaire


                  • #10
                    Ce ne sont pas les & que je veux te faire remarquer mais les espaces que tu as mis devant. Sinon je sais que ce sont des & qu'il faut utiliser, comme pour les GET d'ailleurs.

                    Concernant le champs apparement aléatoire, es tu certain qu'il n'est pas différent à chaque rechargement de page ?
                    Si c'est le cas, ça doit être pour ça que ça ne fonctionne pas. Il faudrait peut être que tu essayes de le récupérer dans le formulaire avant de faire le post.

                    Commentaire


                    • #11
                      ça fonctionne c'était bien les espaces avant les &. Un grand merci !

                      Commentaire

                      Chargement...
                      X