Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Commit 6461a0c

Browse files
Fix SpeedTestClient
1 parent fc1f148 commit 6461a0c

2 files changed

Lines changed: 19 additions & 7 deletions

File tree

src/SpeedTestSharp/Client/SpeedTestClient.cs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Diagnostics;
55
using System.Linq;
66
using System.Net.Http;
7+
using System.Net.Http.Headers;
78
using System.Text;
89
using System.Threading;
910
using System.Threading.Tasks;
@@ -55,8 +56,9 @@ public async Task<SpeedTestResult> TestSpeedAsync(SpeedUnit speedUnit,
5556
var latency = await TestServerLatencyAsync(server);
5657
serverLatency.TryAdd(server, latency);
5758
}
58-
catch
59+
catch (Exception ex)
5960
{
61+
Console.WriteLine(ex.Message);
6062
// ignore this server
6163
}
6264
}
@@ -66,7 +68,7 @@ public async Task<SpeedTestResult> TestSpeedAsync(SpeedUnit speedUnit,
6668

6769
private async Task<Server[]> FetchServersAsync()
6870
{
69-
using var httpClient = new HttpClient();
71+
using var httpClient = GetHttpClient();
7072
var serversXml = await httpClient.GetStringAsync(Constants.ServersUrl);
7173
return serversXml.DeserializeFromXml<ServersList>().Servers ?? Array.Empty<Server>();
7274
}
@@ -82,7 +84,7 @@ private async Task<int> TestServerLatencyAsync(Server server, int tests = 4)
8284

8385
var latencyUrl = GetBaseUrl(server.Url).Append("latency.txt");
8486
var stopwatch = new Stopwatch();
85-
using var httpClient = new HttpClient();
87+
using var httpClient = GetHttpClient();
8688

8789
var test = 1;
8890
do
@@ -98,7 +100,7 @@ private async Task<int> TestServerLatencyAsync(Server server, int tests = 4)
98100
test++;
99101
} while (test < tests);
100102

101-
return (int)stopwatch.ElapsedMilliseconds / tests / 2;
103+
return (int)stopwatch.ElapsedMilliseconds / tests;
102104
}
103105

104106
private async Task<double> TestUploadSpeedAsync(Server server, int parallelUploads)
@@ -145,13 +147,13 @@ private async Task<double> TestSpeedAsync<T>(IEnumerable<T> testData,
145147
var timer = new Stopwatch();
146148
var throttler = new SemaphoreSlim(parallelTasks);
147149

148-
using var httpClient = new HttpClient();
149150
timer.Start();
150151
long totalBytesProcessed = 0;
151152

152153
var downloadTasks = testData.Select(async data =>
153154
{
154155
await throttler.WaitAsync().ConfigureAwait(false);
156+
using var httpClient = GetHttpClient();
155157
try
156158
{
157159
var size = await doWork(httpClient, data).ConfigureAwait(false);
@@ -247,5 +249,15 @@ private static string GetBaseUrl(string url)
247249
{
248250
return new Uri(new Uri(url), ".").OriginalString;
249251
}
252+
253+
private static HttpClient GetHttpClient()
254+
{
255+
var httpClient = new HttpClient();
256+
httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(
257+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36");
258+
httpClient.DefaultRequestHeaders.Accept.ParseAdd("text/html, application/xhtml+xml, */*");
259+
httpClient.DefaultRequestHeaders.CacheControl = new CacheControlHeaderValue {NoCache = true};
260+
return httpClient;
261+
}
250262
}
251263
}

src/SpeedTestSharp/Constants.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ public class Constants
55
public const string ConfigUrl = "https://www.speedtest.net/speedtest-config.php";
66
public const string ServersUrl = "http://www.speedtest.net/speedtest-servers.php";
77
public const string Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
8-
public const int MaxUploadSize = 10;
9-
public static readonly int[] DownloadSizes = { 350, 500, 750, 1000, 1500, 2000, 2500, 3000, 3500, 4000 };
8+
public const int MaxUploadSize = 4;
9+
public static readonly int[] DownloadSizes = { 350, 500, 750, 1000, 1500, 2000 };
1010
}
1111
}
1212

0 commit comments

Comments
 (0)