Laden...

Forenbeiträge von Bunnychecker Ingesamt 224 Beiträge

06.01.2010 - 17:56 Uhr

Guten Abend.

Ich bin gerade drauf und dran meine Schleife parallel ablaufen zu lassen, d.h. durchlaufe eine for-Schleife:


for(i=0;i<10;i++) [...];

und möchte nun, dass für jede Schleife ein Thread erzeugt wird und die Schleife durchläuft, sodass jede Schleife quasiparallel ausgeführt wird. Mir ist es dabei egal, in welcher Reihenfolge die Schleifen aufgerufen werden.

Wie stelle ich das an?

06.01.2010 - 16:49 Uhr

Tatsächlich gabs sowas schon 😃 Vielen Dank 😉

06.01.2010 - 16:06 Uhr

Hi.

Ich empfange mit der Funktion gethtml den Quelltext einer URL.

Gibt es Möglichkeiten die Laufzeit der Funktion zu verkürzen? (ohne den Wohnort zur Verteilerstation des Internets in meinem Ort zu verlegen?

Ich hatte da an weglassen von Grafiken, verwenden von Threads, auslagern von diversen Teile oder verwenden von anderen Funktionen gedacht?

Zurzeit benötigt die Funktion zwischen 200 und 220 Millisekunden.



static string gethtml(string url)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.CookieContainer = cookies;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            string html = sr.ReadToEnd();
            return html;
        }


MfG

02.01.2010 - 17:18 Uhr

Ist wirklich super gelungen, man findet hier einfach alles.

29.12.2009 - 16:50 Uhr

Ich habe mir per Webrequest und Webresponse Cookies erstellt und nun möchte ich diese an mein Webbrowselement übergeben.

Da habe ich bei "Webbrowser.Navigate" die Möglichkeit gefunden "Additional Headers" zu übergeben.

webBrowser1.Navigate("http://www.xz.com", null, null, "Cookie: PHPSESSID=xxxxx; cd_cookie=xxxx");

Habe das ausprobiert und mit Wireshark aufgezeichnet, aber es wird kein Cookieheader an die URL gesendet. Was mache ich falsch?

29.12.2009 - 14:28 Uhr

Hallo zusammen.

Ich habe mir einen CookieContainer erstellt, in dem zur Laufzeit, 3 Cookies erstellt werden.

Nun wollte ich gerne den string der Cookies haben, also habe ich:


string cookies = cookiecontainer.GetCookieHeader(new Uri("http://www.xy.de"))

versucht, jedoch liefert mir der string dann nur 2 von 3 Cookies.

Ich habe folgendes versucht:


CookieCollection tester = cookiecontainer.GetCookies(new Uri("http://www.xy.de"));

Die CookieCollection liefert ebenfalls nur 2 Cookies 😦

Wo versteckt sich der letzte Cookie? Ist es vielleicht auch möglich einfach den kompletten Cookiecontainer in einen string zu bringen, ohne das ein Uri angegeben werden muss?

Es liegt zu 99% an

new Uri("http://www.xy.de))" 

nur versteckt sich der letzte Cookie unter Rohdatenansicht??

Hab ihn "http://www.xy.de" bringt mir weniger Cookies als "http://www.xy.de/login.php"

13.12.2009 - 18:41 Uhr

Also ist es demnach nicht möglich bei einem einzelnem Regex Match ohne Matchcollection auf die Gruppen zuzugreifen? Wieso kann man dann überhaupt welche anlegen?

Erst wieder eine Matchcollection anzulegen war nicht der Sinn und etwas hinzulernen würde ich auch gerne.

13.12.2009 - 18:35 Uhr

Keine Sorge, ich habe Google schon zu Rate gezogen und ich weiß auch wie man auf Gruppen zugreift, wenn man eine Matchcollection erstellt hat. Da ist es ein einfaches mit


matchcollection.Groups["Gruppe"]

, aber ich habe hier keine Matchcollection, sondern nur einen einzelnen Match und der Zugriff, wie ich ihn bei einer Matchcollection mache funktioniert nicht. An die "?????" muss sicherlich nur ein ganz trivialer Typ, aber ich weiß es leider nicht.
String kennt keine Gruppen, sagt mir mein Compiler.

13.12.2009 - 18:13 Uhr

Ich habe gerade einen Blackout, wie kann ich auf die Gruppen bei einem einzelnen Match draufzugreifen?


????? = Regex.Match(text, @"(?<Gruppe1>patter)" + @"(?<Gruppe2>patter)").Value
string gruppe1 = ?????.Groups["Gruppe1"].Value;
string gruppe2 = ?????.Groups["Gruppe2"].Value;

Könnte mir grad jemand aushelfen?

Ich kann kurz erklären was ich machen möchte, ich habe einen String, der wie folgt aussehen könnte "144 + 234 ="(zuvor mit Regex bestimmt) und nun möchte ich, dass mir der Compiler das Ergebnis liefert. Daher war mir das einfachste, dem Regex Gruppen zuzuordnen um dann die Werte einzeln in Integer zu konvertieren und den Operator gespeichert zu haben.

13.12.2009 - 12:40 Uhr

Ja habe ich gemacht, es kommt einfach zu einem TimeOut bei

response = (HttpWebResponse)request.GetResponse();

in "GetHtml". Kannst du mir weiterhelfen?

13.12.2009 - 05:40 Uhr

Hey.

Ich rufe in meinem Hauptprogramm:

  1. die Loginfunktion auf "LogIn"
  2. hole ich mir den Quelltext einer URL, wofür man Cookies benötigt mit "GetHtml"
  3. mache eine Postanfrage mit "GetHtmlPost"

  1. ...

Soweit funktionieren die Funktionen alle, jedoch, wenn ich jetzt nach dem Aufrufen von "GetHtmlPost" wieder "GetHtml" aufrufe um den Quelltext einer anderen Seite zu bekommen, bleibt er hängen und läd die Seite nicht mehr.

Was habe ich falsch gemacht?

Mein Code:


public string GetHtml(string url, string useragent, string referer)
            {
                request = (HttpWebRequest)HttpWebRequest.Create(klickurl);
                request.CookieContainer = cookieContainer;
                request.Method = "GET";
                request.Referer = referer;
                request.UserAgent = useragent;
                response = (HttpWebResponse)request.GetResponse();
                sr = new StreamReader(response.GetResponseStream());
                string html = sr.ReadToEnd();
                sr.Close();
                response.Close();
                return html;
            }

            public void GetHtmlPost(string sendestring, string useragent, string sendeurl, string referer)
            {
                request = (HttpWebRequest)HttpWebRequest.Create(sendeurl);
                request.Method = "POST";
                request.Referer = referer;
                request.UserAgent = useragent;
                request.ContentType = "application/x-www-form-urlencoded";
                ASCIIEncoding encoding = new ASCIIEncoding();
                byte[] loginDataBytes = encoding.GetBytes(sendestring);
                request.ContentLength = loginDataBytes.Length;
                Stream stream = request.GetRequestStream();
                stream.Write(loginDataBytes, 0, loginDataBytes.Length);
                stream.Close();
                response = (HttpWebResponse)request.GetResponse();
            }

            public void LogIn(string loginstring, string useragent, string loginurl, string referer)
            {
                request = (HttpWebRequest)HttpWebRequest.Create(loginurl);
                request.CookieContainer = cookieContainer;
                request.Method = "POST";
                request.Referer = referer;
                request.UserAgent = useragent;
                request.ContentType = "application/x-www-form-urlencoded";
                ASCIIEncoding encoding = new ASCIIEncoding();
                byte[] loginDataBytes = encoding.GetBytes(loginstring);
                request.ContentLength = loginDataBytes.Length;
                Stream stream = request.GetRequestStream();
                stream.Write(loginDataBytes, 0, loginDataBytes.Length);
                stream.Close();
                response = (HttpWebResponse)request.GetResponse();
            }

11.12.2009 - 14:03 Uhr

Hätte noch eine Frage, denn es klappt nämlich nicht:

ich habe einen Patter, der IDs ausließt, aber das nur tun soll, wenn hinter den IDs kein "&" Zeichen steht:


Regex.Matches(text, (@"id=\d{8,10}(?!&)"));

Das funktioniert aber nicht, nimmt immer noch Einträge wie "123456789", dem ein "&" nachgestellt ist, also "123456789&" auf. Ich habe auch schon versucht das "&" Zeichen in [&] zu setzen, jedoch ohne Erfolg.

MfG Bunnychecker

11.12.2009 - 11:38 Uhr

Dank dir =) Gestern, kurz vor dem Schlafen gehen, bin ich auf eine Seite gestoßen, die genau diese Lookaheads erklärt hat. Und während des Einschlafens ist mir aufgefallen, dass ich das für mein Problem nutzen könnte. Nun hast du es auch noch bestätigt. Sehr schön.
Welche der beiden Methoden ist denn rechenintensiver? Das Lokahead Patter oder die Gruppendefinierung?

10.12.2009 - 22:10 Uhr

Wenn ich "12 Stunden" und "10 Sekunden" in einem textstring stehen habe aber nur den Wert vor Stunden auslesen möchte. Kann ich das schon in der Regex realisieren, sodass C# zwar den String "[0-9][0-9] Stunden" sucht, aber nur den Wert "[0-9][0-9]" in die Matchcollection aufnimmt?

Gruß Bunnychecker

10.12.2009 - 14:38 Uhr

Das laufende Programm muss nicht beendet werden, aber es sollte solange nichts tun, bis die Uhrzeit erreicht ist, zu der es erneut gestartet werden soll. Ähnlich der Updatefunktion eines Antivirenscanner (der z.B alle 3 Stunden) den Server abfragt, nur wird meine Uhrzeit erst im laufe des Programmes ermittelt. Den Taskplaner sehe ich dadurch ungeeignet.

09.12.2009 - 22:39 Uhr

Guten Abend.

Ich möchte gern, dass mein C# Programm zu einer bestimmten Uhrzeit, die während der Laufzeit des Programms ermittelt wird, wieder gestartet wird.
Bisher habe ich es mit einem Sleep-Befehl realisiert, aber das ist unschön. Wie erreiche ich es, dass das Programm nach X Millisekunden wieder gestartet wird?

MfG Bunnychecker

03.12.2009 - 22:36 Uhr

Die Schleife soll solange laufen bis die Anzahl der Matchcollection 0 oder in meinem Fall kleiner 10 geworden ist. Es ist richtig, dass immer eine neue Matchcollection generiert wird, aber im Laufe meines Programmes wird immer mehr Elemente gelöscht, sodass meine Regex irgendwann mal keine Elemente mehr findet und dann soll die Schleife verlassen werden.

Danke. Hat super geklappt =)

03.12.2009 - 22:23 Uhr

Hi.

Mir gelingt es einfach nicht die "Anzahl der MatchCollection" zur Abbruchbedingung der Whileschleife zu schicken. Die Anzahl der MatchCollection wird erst innerhalb der Do-While Schleife erzeugt. Wie erreiche ich es nun, dass der Wert auch noch nach der geschweifen Klammer vorhanden ist?


do
            {

                MatchCollection matchcollection = filter(text);



            } while (MatchCollection.count < 10);      

Gruß Bunnychecker

01.12.2009 - 21:40 Uhr

Ich hab ja deine einfachere Methode, aus dem Link oben, genommen, aber da ich ja die URL nirgendwo speichern will, habe ich anstatt "DownloadFile" "DownloadData" genommen.

P.S: Ich bin bei einem anderen Projekt gelandet, deswegen bin ich jetzt wieder woanders.

01.12.2009 - 21:32 Uhr

Habs mal mit


WebClient wc = new WebClient();
wc.DownloadData("http://mycsharp.de/");

Hat funktioniert =) Falls es noch eine schnellere andere Methode gibt, würde mich die auch interessieren. Danke.

01.12.2009 - 21:18 Uhr

Guten Abend.

Kann ich in C# eine URL aufrufen ohne sie irgendwo anzeigen zu lassen?

Leider konnte ich dazu bisher nichts finden, außer Codebeispiele um eine URL im Webbrowser zu öffnen.

Gruß Bunnychecker.

01.12.2009 - 01:48 Uhr

Also ich will nicht nerven, aber ich weiß ehrlich gesagt nicht was abbonieren ist und wo ich das auf true setzen soll.

Habe mir zwar die Microsoft Anleitung angeschaut, aber dort steht, ich soll das LoadEreignis anklicken. Das habe ich gar nicht. ( Gewusst wie: Abonnieren von Ereignissen und Kündigen von Ereignisabonnements (C#-Programmierhandbuch) )

Muss das im Quellcode irgendwo hin oder ist das dann danach ein Ereigniss das ich auf True und False setzen kann wie "AllowNavigation"?

01.12.2009 - 01:13 Uhr

Richtig. Ich öffne die Seiten mit dem Webbrowsercontrol. Ich habe 20 Tabs un in jedem Tab, soll eine andere URL geladen werden. Jetzt treten aber diese Popups auf, wenn ich die URLS in den Tabs laden lassen.

In deinem genannten Beitrag steht etwas von ab Windows Explorer 7. Ich habe aber bereits den Windows Explorer 8 und der Popupblocker ist auch angeschalten.

Dann habe ich darin noch den Microsoft Link gefunden mit:


public event CancelEventHandler NewWindow

verstehe aber nicht so recht, wie ich das anwenden soll. Ich bin noch in der Anfangsphase vom Programmieren.

Das sind meine Webcontrols:


private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

private void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

...

und irgendwo im Code rufe ich die URLS dann mit:


webBrowser1.Navigate(mc[0].Value);
webBrowser2.Navigate(mc[1].Value);

auf und dabei öffnen sich die Popups.

30.11.2009 - 23:57 Uhr

Guten Abend

Ich habe zurzeit das Problem, dass beim Öffnen einiger Seiten immer Popups mitgeöffnet werden, die mich stören. Ich habe herausgefunden, dass ich unter Eigenschaften bei "AllowNavigation" die Popups blockieren kann, jedoch behindere ich damit auch die Weiterleitung meiner geöffneten Seiten.

Wie stelle ich das nun an?