Mehrere HTTP-Anfragen in C #

8

Ich muss ungefähr 200 HTTP-Anfragen parallel zu verschiedenen Servern senden und eine Antwort erhalten. Ich verwende die HttpWebRequest-Klasse in C #. Aber ich sehe keine gute Zeit Verbesserung, wenn Anfragen parallel behandelt werden. Zum Beispiel, wenn eine Anfrage 3 Sekunden braucht, um eine Antwort zu bekommen, 2 Anfragen parallel - 6 Sekunden, 3 Anfragen - 8 Sekunden, 4 Anfragen - 11 Sekunden ... Es ist nicht gut, ich hoffe, dass es die beste Zeit geben sollte, etwa 10 Sekunden für 200 Anfragen. Es sieht so aus, als würden nur 2-3 Anforderungen parallel ausgeführt, aber das Zeitlimit beginnt unmittelbar nach der Erstellung des WebRequest-Objekts. Ich habe versucht, DefaultConnectionLimit und MaxServicePoints -Werte zu setzen, aber ID hat nicht geholfen. Wie ich diese Parameter für die Anzahl der Anfragen an eine Seite parallel verstehe. Ich brauche Anfragen an verschiedene Seiten.

Codebeispiel, das ich zum Testen verwende:

%Vor%

Ist jemand jemals auf ein solches Problem gestoßen? Vielen Dank für Anregungen.

    
Nikita 04.06.2010, 09:47
quelle

5 Antworten

3

Statt Ihre eigenen Threads des Startens versuchen, die asynchronen Methoden des HttpWebRequest verwenden wie HttpWebRequest.BeginGetResponse und HttpWebRequest.BeginGetRequestStream .

    
Jakob Christensen 04.06.2010 09:51
quelle
2

Dies könnte helfen - Ссылка

Schlägt vor, dass die Anzahl der erlaubten TCP-Verbindungen begrenzt ist, Sie aber das Limit erhöhen können

    
ChoccyButton 04.06.2010 09:52
quelle
1

Verwenden Sie stattdessen asynchrone Webanfragen.

Edit: Ссылка

    
k_b 04.06.2010 09:50
quelle
0


Sie können dies versuchen:

%Vor%     
Xstahef 04.06.2010 09:59
quelle
-2

Dies ist der Code der Android-Anwendung der sendenden Anfrage. Wie können wir den oberen Code wie verwenden? params.add (new BasicNameValuePair ("Schlüssel", "Wert");

HttpPost request = new HttpPost ();

Liste params = new ArrayList ();

params.add (new BasicNameValuePair ("key", "value"); // Wie können wir den Wert in diesem Format Format

geben

post.setEntity (neue UrlEncodedFormEntity (params));

Ссылка

    
user2655792 14.02.2014 11:05
quelle

Tags und Links