1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

.net webbrowser/webclient/webrequest/webresponse

  • Spite82
  • 5. Juli 2009 um 16:08
  • Unerledigt
  • Spite82
    8
    Spite82
    Mitglied
    Reaktionen
    1
    Punkte
    571
    Beiträge
    89
    • 5. Juli 2009 um 16:08
    • #1

    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... :winking_face:

    Lg
    Spite

  • sutupud
    13
    sutupud
    Mitglied
    Reaktionen
    59
    Punkte
    1.659
    Beiträge
    320
    • 5. Juli 2009 um 16:54
    • #2

    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;

  • Spite82
    8
    Spite82
    Mitglied
    Reaktionen
    1
    Punkte
    571
    Beiträge
    89
    • 5. Juli 2009 um 17:03
    • #3

    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

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 5. Juli 2009 um 18:06
    • #4
    Zitat von Spite82

    Ich will mich automatisch auf einer Seite einloggen und dann diverse informationen abfragen.


    wget? curl? lynx? links?

    *plantsch*

  • Spite82
    8
    Spite82
    Mitglied
    Reaktionen
    1
    Punkte
    571
    Beiträge
    89
    • 5. Juli 2009 um 18:20
    • #5

    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

  • anwesender
    8
    anwesender
    Mitglied
    Reaktionen
    12
    Punkte
    647
    Beiträge
    125
    • 6. Juli 2009 um 00:26
    • #6

    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

  • Wolfibolfi
    37
    Wolfibolfi
    Mitglied
    Reaktionen
    186
    Punkte
    14.936
    Beiträge
    2.942
    • 6. Juli 2009 um 08:41
    • #7

    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.

  • Spite82
    8
    Spite82
    Mitglied
    Reaktionen
    1
    Punkte
    571
    Beiträge
    89
    • 6. Juli 2009 um 11:09
    • #8

    @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:

    Zitat

    CookieContainer cCon = new CookieContainer();
    Cookie c = new Cookie(name, value, path);
    CookieCollection cCol = new CookieCollection();

    für jedes Cookie in WebBrowser.Cookie
    {
    cCol.Add(c);
    }
    cCon.Add(cc); <- Keine Datenübergabe, cCon.Count ist danach immer noch 0!!!!

    Alles anzeigen

    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

  • anwesender
    8
    anwesender
    Mitglied
    Reaktionen
    12
    Punkte
    647
    Beiträge
    125
    • 6. Juli 2009 um 11:33
    • #9

    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

  • Spite82
    8
    Spite82
    Mitglied
    Reaktionen
    1
    Punkte
    571
    Beiträge
    89
    • 6. Juli 2009 um 11:36
    • #10

    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

  • Spite82
    8
    Spite82
    Mitglied
    Reaktionen
    1
    Punkte
    571
    Beiträge
    89
    • 6. Juli 2009 um 11:39
    • #11

    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)

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung