.net webbrowser/webclient/webrequest/webresponse

  • Also wie der Titel es schon andeutet, geht es um das .net (c#).

    Ich will mich automatisch auf einer Seite einloggen und dann diverse informationen abfragen.
    Was mit dem WebBrowser gut geht hab ich sonst noch nicht hinbekommen.
    Der Nachteil mit dem Webbrowser ist, dass er alles herunterlädt, was er auch zum darstellen der Webseiten braucht (Bilder usw..., was ich allerdings gar nicht brauche....).
    Nun habe ich versucht das gleiche mit einem WebClient zu machen, mit dem Ergebnis, dass ich nach meinem "DownloadString(URI)" als String sozusagen nur sowas bekomme:

    Zitat

    <meta http-equiv='refresh' content='0; URL=...blablablaURL...>

    Das ist doch einfach ein redirect oder?
    Wie kann ich es jetzt bewerkstelligen, dass der WebClient automatisch zu der neuen Seite navigiert und dann dort den SourceCode downloaded??

    Ich hoffe es ist klar, was ich meine.... also beim WebBrowser hats dieses Problem nicht gegeben, denn die Weiterleitung hat dort anscheinend automatisch funktioniert.... wie kann man das auch mit einem WebClient machen??


    Oder besser mit HttpWebRequests und Responses arbeiten???
    Oder kann man dem Webbrowser beibringen keine Images usw. downzuloaden???
    Mir ist eigentlich egal, wie es dann im Endeffekt funktioniert... ;)

    Lg
    Spite

  • firefox hat unter Einstellungen->Inhalt eine Option "Grafiken laden" wo man das laden von grafiken generell ausschalten oder für einzelne seiten blockieren kann.

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    &#128513;&#128514;&#128515;&#128516;&#128517;&#128518;&#128519;&#128520;&#128521;&#128522;&#128523;&#128524;&#128525;&#128526;&#128527;&#128528;&#128530;&#128531;&#128532;&#128534;&#128536;&#128538;&#128540;&#128542;&#128544;&#128545;&#128546;&#128547;&#128549;&#128552;&#128553;&#128554;&#128555;&#128557;&#128560;&#128561;&#128562;&#128563;&#128565;&#128566;&#128567;

  • Danke,

    aber ich programmier mir ein kleines Tool, mit dem ich Daten aus einer Webseite auslese.
    Dazu verwende ich zZ das "WebBrowser" - Objekt aus dem .NET-Framework. Vielleicht hätte ich das oben dazuschreiben sollen :) -> daher bringt mir die Einstellung im Firefox nichts...

    Danke trotzdem für deine Antwort!!

    Lg
    Spite

  • Danke ich seh mir das mal kurz an....
    ABER: optimal wäre: F
    Funktionalität einer WebBrowser-Control OHNE das Laden von jedweden Ressourcen (Bilder/Sounds) um Bandbreite einzusparen.... Ich programmiere grad C#/.NET und wäre froh, wenn man das irgendwie machen könnte, dass entweder meine funktionierende Variante mit WebBrowser keine Bilder herunterlädt ODER ich zB eben ein WebClient-Control verwende, welches bis jetzt allerdings nicht funktioniert..... (wegen der Weiterleitung, eventuelle Cookies usw.....)

    Gibts denn da keine Möglichkeiten das Ganze EINFACH zu bewerkstelligen?? Ich meine, ich kenne mich nicht so gut aus mit den ganzen HttpRequests usw....

    Vielleicht hilft noch eine kurze Beschreibung davon, was ich eigentlich machen will:
    Login bei einer Seite, nach Login wird man weitergeleitet und kommt zur Standardseite - OK, aber wenn ich sozusagen manuell die Weiterleitung mache und mir die URI zusammenbaue, dann komme ich immer auf eine Seite, wie: "ungültige Session_blablabl..."

    Das Alles soll im Hintergrund laufen, und dann will ich zusätzlich ein WebBrowser-Control haben, mit der ich auf der Seite auch herumsurfen kann..... (gleiche SessionID usw...)

    Sollte ich jetzt vielleicht 2 einzelne WebBrowser nehmen und einfach einen gar nicht anzeigen lassen oder wie??
    Bandbreite wäre halt mit einem WebClient und einem WebBrowser sehr viel besser ausgenutzt....

    Lg
    Spite

  • selbst programmieren wird bei sessions und cookies doch ein bisserl n spass, aber der "webbrowser" ist ja im grunde auch nur ein internet explorer, vielleicht hilft dir das ein wenig weiter... (fürn IE gibts ja auch so image-blocker?)

    man kann übrigens auch die mozilla .dll irgendwie einbinden... ist vielleicht leichter zu steuern...

    oder eben einfach wget/curl, wie schon gesagt wurde :)

    Thomas

  • Also ich würd mal den kompletten Verkehr mit Wireshark aufzeichnen und anschaun. Da kriegst sicher raus, was da genau passiert, und dann kannst es ziemlich einfach nachbauen.

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • @all:

    Thx, für eure Bemühungen!
    Anscheinend liegt es an den Cookies, die zuerst vom Server gesendet werden, und ich diese nicht wieder mitgesendet habe -> "Ungüligte Session....".

    Nun hab ich aber noch ein Problem - ich habs zZ mal so geregelt:
    Ich hab jetzt einen WebBrowser und verwende HttpWebRequests, um den Source-Code von Seiten downzuloaden.
    Mein Login funktionier jetzt so, dass ich den Webbrowser die Anmeldung überlasse (redirect usw.), der dann die Hauptseite geöffnet hat. Im String WebBrowser.Cookie stehen dann die 3 Cookies getrennet mit "; " drinnen. Ich schaffe es jetzt allerdingds leider nicht diese meinem HttpRequest zu übergeben.

    Ich habs schon versucht einen CookieContainer zu erstellen aus dem String des WebBrowsers und dieses dann dem HttpWebRequest zuzuweisen. Das scheitert allerdings schon daran:

    Zweitens hab ich versucht einfach im HttpWebRequest sowas zu machen:

    Zitat

    request.Headers['Cookie'] = WebBrowser.Cookie <-dies wirft mir eine Exception....

    Hat jemand noch eine Idee zu den "shared Cookies"??

    Thx an alle erstmal :)
    Spite

  • solch ein ähnliches problem hatte ich mal, als ich einen "webserver" programmiert hab, und threads benutzt habe, dass der eine thread zB die eine hälfte der daten bekommen hat und der andere die andere hälfte, also wenn du threads benutzt, geh mal mit einzelschritten durch (glaub F6) und überprüf das...

    Code
    request.Headers['Cookie'] = WebBrowser.Cookie      <-dies wirft mir eine Exception....

    ist die .cookie property ein string?
    bzw, welche exception wirft er überhaupt?

    Code
    cCon.Add(cc);

    fügt was hinzu? meintest du vielleicht:

    Code
    cCon.Add(cCol);

    Thomas

  • Problem gelöst:

    Zitat

    request.Headers['Cookie'] = WebBrowser.Cookie


    funktionierte komischer weise nicht, aber einen String abspeichern:

    Zitat

    String cookieString = WebBrowser.Cookie;
    request.Headers['Cookie'] = cookieString


    funktioniert schon^^
    Komischkomisch....

    Hat jemand eine Ahnung, wieso das so ist?

    Lg
    Spite

  • Danke anwesender :)
    Ja die .Cookie Property ist ein String (set und get) deshalb versteh ich das nicht ganz....
    Aber mit meinem "cookieString" geht es jetzt ja :)
    Und ja, da hab ich micht vertippt, sorry:

    Zitat

    cCon.Add(cCol);

    so muß es heißen :), das ist jetzt aber sowieso hinfällig :)

    Lg

    edit:
    Vielleicht hat es damit zu tun, dass mein HttpRequest in einem BackgroundWoker Thread durchgeführt wird?? Hat das eventuell Auswirkungen??

    Einmal editiert, zuletzt von Spite82 (6. Juli 2009 um 11:45)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!