Dim Maresponse As System.Net.WebResponse Try Dim Marequest As System.Net.WebRequest = System.Net.WebRequest.Create("http://www.monsite.com/mapage.html") ' Si votre site nécessite une identification NT Marequest.Credentials = New System.Net.NetworkCredential("LECOMPTE", "LEMOTDEPASSE") Maresponse = Marequest.GetResponse Dim streamReceive As System.IO.Stream = Maresponse.GetResponseStream() Dim encoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8") Dim streamRead As System.IO.StreamReader = New System.IO.StreamReader(streamReceive, encoding) Response.Write(streamRead.ReadToEnd()) Catch ex As Exception Trace.Warn("Erreur d'appel de la page :", ex.Message) Finally Maresponse.Close() End Try
pas mal mais il pourrait y avoir une gestion plus fine des erreurs :) comment savoir si la page existe ou pas, ce serait bien d'indiquer s'il y a eu une 404 etc ... on pourrait aussi faire ca : catch e1 as SecurityException'The caller does not have permission to connect to the requested URI or a URI that the request is redirected to.catch e2 as UriFormatExceptionThe URI specified in requestUriString is not a valid URI.Tout ca serait vraiment le top du top ;)
Bonjour,J'ai un code à peu près similaire. Personne ne rencontre de problème avec les caractères accentués (non encodés strictement HTML, ie é ...) ?J'ai essayé les format d'encoding proposés par le .net (ascii, unicode, utf7, 8...) sans résultat.Un exemple : lancement sur www.google.fr => je n'ai pas les accents.Merci de votre aide.Une partie de mon code...-----------------------------------------------WebRequest myWebRequest=WebRequest.Create("http://www.google.fr");myWebRequest.Timeout=CST_TIMEOUT;WebResponse myWebResponse=myWebRequest.GetResponse();// Lecture du flux et enregistrement dans une stringbuilderStream oS = myWebResponse.GetResponseStream();StreamReader oSReader = new StreamReader(oS, System.Text.Encoding.UTF8);Console.WriteLine(oSReader.ReadToEnd()); // ** Pas d'accents à l'affichage (ni quand j'enregistre dans un fichier texte) **oSReader.Close();oS.Close();
Réponse à lolofbje crois que c'est ton getResponse (myWebResponse) qui ne respecte pas le caractère set, moi j'utilise un encoding pour la reception et l'ecriture Dim Encoding As System.Text.Encoding = _ System.Text.Encoding.GetEncoding("utf-8")'puisstrOut = Encoding.GetString(WebClient1.DownloadData(remoteScript))'Ecriture du résultat dans un fichier:Dim sw As StreamWriter = New StreamWriter("Seminaire.txt", False, Encoding)sw.Write(strOut)sw.Close()(bien sur tu n'est pas obligé de l'écrire dans un fichiercar à mon avis la redirection de ton streamreader fonctionne.)
utf-8 a jamais garde les accents ! c'est encoding.getencoding("iso-8859-1")plus dans le web.config<globalization requestEncoding="iso-8859-1" responseEncoding="iso-8859-1" fileEncoding="iso-8859-1" />
merci pour cet exemple, mais il ne m'affiche pas les images.. je pense que c'est la même chose pour tout le monde ?Voilà ma solution, en admettant qu'on récupère www.google.fr :Response.Write("<base href=\"www.google.fr\" />"+streamRead.ReadToEnd());
Quand on affecte le credential : Marequest.Credentials = New System.Net.NetworkCredential("LECOMPTE", "LEMOTDEPASSE") Il n'y aurais pas moyen de lui passer l'authentification windows : Marequest.Credentials = New System.Net.NetworkCredential(windows authentification).Dans les variables d'Environment on peut avoir le nom de l'utilisateur et le nom de domaine, mais on ne peut pas récupérer le mot de passe. Si quelqu'un a une idée se serais bien apprécié.
Essaye avec default de credential.
J'avais trouvé la réponse à ma question en continuant de cherché et cet exactement ce que j'ai utilisé et ça fonctionne parfaitement.merci
peut on avoir un code equivalent en ASP, pour ceux qui font pas le .NET
euh suis le seul à me posé la question :On le met ou ton code ? lol
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 872 802 membres 228 nouveaux aujourd'hui 16 151 membres club