Envoyé une requete à un serveur et attendre une réponse

bjrttlemonde Messages postés 17 Date d'inscription lundi 14 avril 2008 Statut Membre Dernière intervention 7 juillet 2010 - 10 juin 2010 à 11:48
BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 - 10 juin 2010 à 16:52
Bonjour tout le monde,

Etant débutante en c# .net je cherche à envoyé une requête à un serveur et recevoir une réponse voici la méthode que j'utilise mais malheureusement elle marche pas

        public static void FaireUneDemande(string URL) 
        {
            try
            {
                //Créer la requête HTTP
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);

                req.Method = "GET";
                //Supprimer le suivi de la redirection automatique
                req.AllowAutoRedirect = false;
                //Mettre les données dans le corps de la requête
                string data = Configuration.VersionMiniMax + ";" + Configuration.Nim;
                req.ContentLength = data.Length;
                //Ecriture Des données
                Stream reqout = req.EndGetRequestStream(req.BeginGetRequestStream(new AsyncCallback(AsyncRequestWriter), null));
                StreamWriter wri = new StreamWriter(reqout, Encoding.GetEncoding(850));
                wri.Write(data);
                wri.Close();
                reqout.Close();

                //Excecution de la requete
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();

                switch (res.StatusCode)
                {
                    default:
                        Stream resin = res.GetResponseStream();
                        StreamReader rea = new StreamReader(resin, Encoding.GetEncoding(850));
                        rea.Close();
                        resin.Close();
                        break;
                }
                //Ferme la réponse
                res.Close();
            }
            catch (Exception e)
            {
                Log.logException("Comparaison version avec le serveur", e);
            }
        }

        private static void AsyncRequestWriter(IAsyncResult asynchronousResult)
        {
            HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

            // End the operation
            Stream postStream = request.EndGetRequestStream(asynchronousResult);

            Console.WriteLine("Please enter the input data to be posted:");
            string postData = Console.ReadLine();

            // Convert the string into a byte array.
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);

            // Write to the request stream.
            postStream.Write(byteArray, 0, postData.Length);
            postStream.Close();

            // Start the asynchronous operation to get the response
            request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
        }
        private static void GetResponseCallback(IAsyncResult asynchronousResult)
        {
            HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

            // End the operation
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamRead = new StreamReader(streamResponse);
            string responseString = streamRead.ReadToEnd();
            Console.WriteLine(responseString);
            // Close the stream object
            streamResponse.Close();
            streamRead.Close();

            // Release the HttpWebResponse
            response.Close();
            allDone.Set();
        }


est ça bloque a ce niveau
                Stream reqout = req.EndGetRequestStream(req.BeginGetRequestStream(new AsyncCallback(AsyncRequestWriter), null));


il part directement après vers le catch.

Est ce que quelqu'un pourra me sauver le vie

Merci à tous

1 réponse

BunoCS Messages postés 15472 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 25 mars 2024 103
10 juin 2010 à 16:52
Hello,
Regardes si ma source TopCS peut t'aider: j'envoie une requête et je traite la réponse de manière asynchrone.

N'hésites pas à me dire ce que tu ne comprends pas

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
0
Rejoignez-nous