WebRequest, htaccess et variable post

Signaler
Messages postés
2
Date d'inscription
jeudi 13 août 2009
Statut
Membre
Dernière intervention
14 août 2009
-
Messages postés
2
Date d'inscription
jeudi 13 août 2009
Statut
Membre
Dernière intervention
14 août 2009
-
Bonjour,

Voici un code qui marche très bien et qui permet de recuperer une page web protegée par htaccess.

Uri uri;
            try
            {
                uri = new Uri("http://www.exemple.com/admin/mypage.php");
            }
            catch
            {
                return;
            }

            WebRequest request;
            try
            {
                request = WebRequest.Create(uri);

                request.Credentials = new NetworkCredential("htaccessLogin", "htaccessPass");

            }
            catch
            {
                return;
            }

            WebResponse response;
            try
            {
                response = request.GetResponse();
            }
            catch
            {
                return;
            }

            StreamReader sr = null;
            string res = "";
            try
            {
                sr = new StreamReader(response.GetResponseStream());

                res = sr.ReadToEnd();
            }
            catch
            {
                return;
            }
            finally
            {
                if (sr != null)
                    sr.Close();
            }


Voici le même code qui marche très bien egalement et qui permet d'envoyer des variable en post à une page PHP pas protégée par htaccess.

Uri uri;
            try
            {
                uri = new Uri("http://www.exemple.com/mypage.php");
            }
            catch
            {
                return;
            }

            WebRequest request;
            try
            {
                request = WebRequest.Create(uri);

                request.Credentials = new NetworkCredential("htaccessLogin", "htaccessPass");

                byte[] postDataBytes = System.Text.Encoding.ASCII.GetBytes("param1=value1& param2=value2");

                // Set values for the request back 
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = postDataBytes.Length;

                System.IO.Stream reqStream = request.GetRequestStream();
                reqStream.Write(postDataBytes, 0, postDataBytes.Length);
                reqStream.Close();   

            }
            catch
            {
                return;
            }

            WebResponse response;
            try
            {
                response = request.GetResponse();
            }
            catch
            {
                return;
            }

            StreamReader sr = null;
            string res = "";
            try
            {
                sr = new StreamReader(response.GetResponseStream());

                res = sr.ReadToEnd();
            }
            catch
            {
                return;
            }
            finally
            {
                if (sr != null)
                    sr.Close();
            }


Maintenant, j'aimerais comprendre pourquoi le code suivant ne marche pas : Envoyer une variable post à une page proteger par htaccess !

Uri uri;
            try
            {
                uri = new Uri("http://www.exemple.com/admin/mypage.php");
            }
            catch
            {
                return;
            }

            WebRequest request;
            try
            {
                request = WebRequest.Create(uri);

                byte[] postDataBytes = System.Text.Encoding.ASCII.GetBytes("param1=value1& param2=value2");

                // Set values for the request back 
                request.Method = "POST";
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = postDataBytes.Length;

                System.IO.Stream reqStream = request.GetRequestStream();
                reqStream.Write(postDataBytes, 0, postDataBytes.Length);
                reqStream.Close();   

            }
            catch
            {
                return;
            }

            WebResponse response;
            try
            {
                response = request.GetResponse();
            }
            catch
            {
                return;
            }

            StreamReader sr = null;
            string res = "";
            try
            {
                sr = new StreamReader(response.GetResponseStream());

                res = sr.ReadToEnd();
            }
            catch
            {
                return;
            }
            finally
            {
                if (sr != null)
                    sr.Close();
            }

2 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut,

regardes http://developer.yahoo.com/dotnet/howto-rest_cs.html

Mais il me semble que ton probleme est mal exposé.
Car les codes ne correspondent pas aux commentaires.

De plus les try autour d'une variable ne sert a rien.

Et les return dans les catch c'est pas la bonne meniere des les utiliser.

Quel est le message d'erreur qui est connu dans le message de l'exception de ton try.

Bon dev.
Messages postés
2
Date d'inscription
jeudi 13 août 2009
Statut
Membre
Dernière intervention
14 août 2009

En effet, il faut intervertirez la portion de code 2 et la portion de code 3... Erreur de copier coller. Excusez moi.

Malheureusement ton lien n'apporte rien de nouveau à l'éclaircissement de se problème.

quand au try qui entour la création d'une variable, dans les fait, elle sert. Il suffit d'atteindre la limite en terme de ressource mémoire pour s'en apercevoir :)

Originellement, le code est encapsulé dans une méthode de type void. Le return à donc du sens puisqu'il sert à sortir de cette fonction proprement en passant par les finally...

Enfin bref, la n'est pas la question. L'objet de mon message n'est pas d'apprendre les rudiments de la maitrise du langage mais bien de comprendre comment utiliser le framework pour se cas précis.

Il n'y a pas d'exception envoyer à aucun moment pour l'exectution de ces code.

Exécution des différentes portions :

1) Cas avec le htaccess : La page est recuperer sans probleme

2) Cas du post sans htaccess : La page web est recuper sans probleme et les variable sont reçu côté server

3) Cas 1) et 2) post et htaccess en même temps => la page web est recuperer sans probleme sauf que 9 fois sur 10, les variables ne sont pas reçu côté server.

C'est un server web classique de chez ovh qui heberge une page php classic qui affiche juste ses variables post justement pour ce test.

J'ai lu sur le net que c'était un probleme genre bug du framework mais j'y crois pas trop car je ne le trouve pas dans la liste des bug répertorier par microsoft.

C'est un framework 3.

Merci d'avance pour ceux qui prendrons la peine d'examiner se problème.