IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Acces a une page web via HttpWebRequest


Sujet :

C#

  1. #1
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut Acces a une page web via HttpWebRequest
    Bonjour

    Cette question concene surtout la strategie d'acces a une page web et je ne sais pas tres bien ou la poster mais comme cela concerne un developpement en C# je le poste ici

    Voici un lien url

    http://www.gsmloket.com/start-verkoop#/brands/54

    Si je copie ce lien dans mon Browser IE ou Firefox, j'obtiens la page attendue

    Par contre si j'utilise ce meme lien dans un httpWebRequest, j'obtiens bien une page (pas d'erreur) mais ca ressemble a la page index de base du site et pas la page que donne mon browser

    N.B. : Sur d'autres pages, d'autres site cela fonctione tres bien, il y a donc qq chose de spécifique sur le site designé

    Quel peut etre la différence ??

    Merci de vos conseils

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
        // ****************************************************************************
        public StringBuilder CallWeb(string sHttp)
        {
          HttpWebRequest request = (HttpWebRequest)WebRequest.Create(sHttp);
     
          CookieContainer cookieContainer = new CookieContainer();
          request.CookieContainer = cookieContainer;
     
          StringBuilder sb = new StringBuilder();
     
          request.Timeout = 50000;
          HttpWebResponse response;
          try
          {
            response = (HttpWebResponse)request.GetResponse();
          }
     
          catch (Exception e)
          {
            MessageBox.Show(e.Message);
            return null;
          }
     
          Stream resStream = response.GetResponseStream();
     
          StreamReader _Answer = new StreamReader(resStream);
     
          sb.Append(_Answer.ReadToEnd());
     
          _Answer.Close();
          return sb;
        }
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    certains sites ont du code html qui déclenche des tas de requetes http pour afficher le contenu (frames, plugins etc...)
    quand ie ou firefox lisent une pages, à la différence de toi c'est qu'ils lisent le contenu, le décrypte et l'exécute
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut Pol63

    Donc si je comprends bien, tu veux dire que dans le contenu brut que que je lis avec mon httpwebrequest et l'url

    http://www.gsmloket.com/start-verkoop#/brands/54

    Je devrais trouver d'autres liens ou des morceaux de script a executer ?

    Si c'était le cas il suffirait que je copie le resultat html de ce request dans le browser pour voir le contenu que j'attends ?

    Mais c'est pas ca du tout ???
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    Ce que je constate c'est que si on enregistre la page avec le navigateur et qu'on ouvre cette page en local, ca ressemble à ce que tu décris...

    Je ne sais pas l'expliquer techniquement, car je suis (une bille) au même niveau qu'olibara.... héhé

    Je suppose qu'il y a du JavaScript quelque part qui se déclenche, mais à quelle ligne se déclenche t-il ?
    Si c'est le cas, pourquoi cela ne marche t-il pas en local {avec accé internet} ? --> politique de "restriction" du domaine ou quelque chose de ce genre ?

    EDIT:::
    Bon avec firebug j'obtiens pour la page en local:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ is not defined
    [Break on this error] $(function() {
    start-verkoop.htm (ligne 144)
    $ is not defined
    [Break on this error] $("#content-basket").show();
    start-verkoop.htm (ligne 302)
    Ca ressemble donc bien à un appel d'affichage de la page "riche" qu'on voit dans un vrai navigateur....

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    et réécrire un navigateur c'est pas simple ^^

    m'enfin pour lire des infos, un site c'est pas le mieux, un webservice ou du socket c'est quand meme plus fait pour ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Merci de votre aide !

    Bonjour alavoler

    Ce que je constate c'est que si on enregistre la page avec le navigateur et qu'on ouvre cette page en local, ca ressemble à ce que tu décris...
    Que veux tu dire ?
    Qu'obtiens tu si tu utilise directement le lien que j'ai donné ?
    Vois-tu une page avec tous les modeles Nokia ?

    Moi si je sauve cette page avec FireFox, tout le contenu est bien sauvé

    Mais par contre si j'utilise ce lien avec ma methode CallWeb j'obtiens une espece de page d'enveloppe (+/- 12K) sans conteu signifiant

    Mais je reste persuadé qu'il y a quelque chose a mieux comprendre pour pouvoir recuperer le contenu de cette page sans faire de magie ni réécrire un browser

    Je continue a chercher en esperant qu'un geek en la matiere puisse avoir une piste
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Points : 552
    Points
    552
    Par défaut
    Yop olibara

    Et bien avec Firefox j'enregistre en tant que "Page Web, HTML uniquement", c'est ce que dois faire ton code je présume, et j'obtiens un canevas sur fond blanc....

    Toi tu dois utiliser "Page Web Complète", ducoup Firefox est intelligent et il enregistre la page avec les JS liés... une sorte "d'aspirateur de site non récursif"

    EDIT:
    Et meme en mode "Page Web complète" il manque certaine image & style... dur, dur

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    Citation Envoyé par olibara Voir le message
    Mais je reste persuadé qu'il y a quelque chose à mieux comprendre pour pouvoir recuperer le contenu de cette page sans faire de magie ni réécrire un browser
    si tu veux, m'enfin je serais toi j'y mettrais pas ma main à couper

    ca reste vérifiable d'ailleurs, tu peux mettre un plugin sur ie ou firefox pour voir les entetes http, tu verras alors qu'il faut plusieurs appels sur le web pour afficher un site au complet

    edit : je viens de faire le test vu que j'ai le plugin d'installé ; sur le lien que tu donnes au début, l'équivalent d'une cinquantaine de httpwebrequest viennent de passer ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Yop alavoler !

    Bien vu c'est exactement ca !
    Bon maintenant je vais essayer de comprendre ce qui est exécuté dans cette page et comment l'émuler avec .NET pour reproduire cela

    Aide bienvenue pour l'enrichissement de la connaissance !
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  10. #10
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Salut Pol63

    Oui j'ai firebug installé aussi et je vois bien plusieurs requete
    Mais a mon avis seule une ou dex doivent etre utiles d'ailleurs le contenu pertinent se trouve dns un seul JSON

    dont le post est ceci (dixit firebug)

    http://www.gsmloket.com/backofficeAj...Devices/54/529

    J'ai encore pas mal de choses a apprendre dans ce domaine, mais j'y arriverai
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  11. #11
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    c'est vrai que dans ce cas il te suffit de repérer celle qui affiche ce que tu souhaites
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  12. #12
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    c'est vrai que dans ce cas il te suffit de repérer celle qui affiche ce que tu souhaites
    Oui mais surtout
    1- La retrouver DANS les page, car si c'est pour parcourir les differentes pages a la main avec l'aide FireBug, autant tout faire a la main
    2- Savoir executer la requete a partir de .NET

    Pour le moment (si je reprends ce site en exemple)

    1 Page d'entrée

    http://www.gsmloket.com/

    2- On appuiye sur "Recherche de mon téléphone mobile"

    http://www.gsmloket.com/start-verkoop/French#/brands

    Déja là il y a une difficulté car ce lien n'est pas visible dans la page home et il faut donc trouver la commande a executer pour trouver cet url

    Et ainsi de suite
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

Discussions similaires

  1. [Windows Phone 8] Comment actualiser une page web via le code behind C#
    Par gfaye dans le forum Windows Phone
    Réponses: 2
    Dernier message: 28/11/2013, 23h54
  2. partager une page web via un lien
    Par manbar dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2012, 17h27
  3. suivre un lien dans une page web via script
    Par zerros dans le forum Programmation et administration système
    Réponses: 0
    Dernier message: 22/06/2011, 17h07
  4. Comment envoyer un mail à partir d'une page WEB via Thunderbid ?
    Par Zebulon777 dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 21/02/2011, 11h17
  5. sessions : securiser l'acces a une page web
    Par kam81 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 25/11/2006, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo