Lecture page web

cs_lonzo Messages postés 2 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 19 juin 2010 - 7 juin 2010 à 10:09
cs_lonzo Messages postés 2 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 19 juin 2010 - 19 juin 2010 à 16:44
Bonjour à tous, je suis stagiaire en DUT informatique et il ne me reste plus beaucoup de temps, je vais essayer de remplir plus de 20000 formulaires avec un programme en C# :).
Mais j'ai deja un souci lorsque je veux recuperer la reponse du serveur, notemment pour récupérer le cookies.
Le programme bloque au test2 à cette ligne de code :
HttpWebResponse response = (HttpWebResponse) myReq.GetResponse();
Je ne trouve vraiment pas pourquoi sa plante.
Quelqu'un aurait-il une autre facon de recupérer le cookie, parceque à la limite je n'ai pas besoin de parser la page, c'est vraiment pour le cookie.
Merci

namespace ProjetRes2010
{

class MainClass
{
public static void Main (string[] args)
{
string Url = "http://www.bibliotheque.cea.fr/";

string UrlLogin = Url +"pmb/main.php";

//string login = "blabla";

//string mdp = "blabla";

CookieCollection MonCookie = null;

//On se connecte
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(UrlLogin);

myReq.Credentials = CredentialCache.DefaultCredentials;

myReq.CookieContainer = new CookieContainer();

myReq.Method = "POST";

myReq.ContentType="application/x-www-form-urlencoded";

string chaine = "user=blabla&password=blabla&database=bibli";

myReq.ContentLength = chaine.Length+1;

Stream envoi = myReq.GetRequestStream();

StreamWriter SW = new StreamWriter(envoi);

Console.WriteLine ("test");

SW.WriteLine(chaine);

//SW.Close();

//on lit la reponse liee a la connexion

Console.WriteLine ("test2");

HttpWebResponse response = (HttpWebResponse) myReq.GetResponse();

Console.WriteLine ("test3");

Stream streamResponse = response.GetResponseStream();

StreamReader SR = new StreamReader(streamResponse);

Console.WriteLine(SR.ReadToEnd());

//SR.Close();

MonCookie = response.Cookies;

Console.WriteLine("--------------------------------------------------------------------");
......

2 réponses

B0ur5e Messages postés 12 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 20 juin 2010 1
19 juin 2010 à 15:53
Bonjour, voilà tu as 2 erreur à première vu

1) Changer l'encodage de ta réponse
2) Fermer HttpWebResponse response //Fuite de mémoire.

Ton Code
Console.WriteLine ("test2");
HttpWebResponse response = (HttpWebResponse) myReq.GetResponse();
Console.WriteLine ("test3");
Stream streamResponse = response.GetResponseStream();
StreamReader SR = new StreamReader(streamResponse);
Console.WriteLine(SR.ReadToEnd());
//SR.Close();
MonCookie = response.Cookies; 


Le mien
/*Identique
Console.WriteLine ("test2");  
HttpWebResponse response = (HttpWebResponse) myReq.GetResponse();
Console.WriteLine ("test3");
Stream streamResponse = response.GetResponseStream();
*/
StreamReader StreamreaderResponse = new StreamReader (streamResponse, Encoding.UTF8);
//tu peux maintenant l'afficher
Console.WritLine (StreamReaderResponse.ReadToEnd());
response.Close();  //N'oublie pas de fermner HttpWebResponse


Comme tu as mis les reader writer . close() en commentaire, je suppose que tu les fermes.

Je n'ai pas tester ton code, mais peut-être aussi serais-tu intéresser de regarder ce que HttpWebRequest offre comme propriété pour l'ajuster à ce que tu désire.
0
cs_lonzo Messages postés 2 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 19 juin 2010
19 juin 2010 à 16:44
Merci à toi, j'ai oublié de fermer le post, en faite le serveur ne transmettait pas le cookie, c'était un soucis su serv, donc j'ai fait afficher mon cookie et je les rentrer manuellement dans le code source du site en affichant le coolie et en mettant en pause mon prog.
Ce n'est pas trés propre mais comme je n'est besoin que d'une seul fois d'utiliser ce programme, ce n'est pas trés grave
Voila.merci
0
Rejoignez-nous