Hallo zusammen,
ich habe folgenden Code:
WebRequest request = WebRequest.Create("https://test.XYZ.com");
request.Method = "POST";
byte[] byteArray = StringToUTF8ByteArray(message);
request.ContentLength = byteArray.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(byteArray, 0, byteArray.Length);
ich habe mit mit Consolen-Ausgaben mal auch Zeitausgaben gemacht, und habe festgestellt, dass das Stream.write immer zwischen 5 und 10 secunden dauert.
Wieso ist das so?? das Bytearray hat im Schnitt nur eine Länge von 230.
10 Sekunden finde ich schon etwas viel!
danke im Voraus
Hallo,
ich denke, die Zeit geht nicht beim Write()
drauf, sondern durch die Initialisierung/Handshake der HTTPS-Verbindung. Das dauert immer etwas, und da lässt sich IMO auch wenig machen.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Nein ich hab mir direkt vor und nach dem Stream.write die Zeit ausgeben lassen.
Hallo,
und woher weisst Du genau wann die gesicherte Verbindung initialisiert wird? Vielleicht ist das erst der Fall, wenn tatsächlich geschrieben wird.
Du kannst das ja mal testen.
Miss mal die Zeit, die request.GetRequestStream()
braucht. Wenn das schnell geht, ist die sichere Verbindung wahrscheinlich noch nicht initialisiert.
Dann schreib Dein Array in mehreren Teilen in den Stream (mehrere Write
-Aufrufe).
Wenn nur der erste Aufruf so lange braucht, dürfte die Sache klar sein...
Die Ergebnisse würden mich auf jeden Fall auch interessieren.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
danke für die Antwort.
Es ist tatsächlich so, dass der Aufruf "GetRequestStream" die Zeit braucht. Das Schreiben an sich geht fix.
Also wird scheibar erst bei dem Aufruf die Verbindung initialisiert.
Da kann man dan wohl nichts machen.
Kann ich die Webrequest samt stream eiegntlich wieder verwenden, oder muss ich das jedes mal neu erzeugen wenn ich neue Requests durch führe????
Totzdem danke.