diff --git a/Netch/Forms/MainForm.MenuStrip.cs b/Netch/Forms/MainForm.MenuStrip.cs index 36b8ac28..74a3d6ac 100644 --- a/Netch/Forms/MainForm.MenuStrip.cs +++ b/Netch/Forms/MainForm.MenuStrip.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; @@ -147,7 +148,17 @@ namespace Netch.Forms if (Global.Settings.UseProxyToUpdateSubscription) request.Proxy = new WebProxy($"http://127.0.0.1:{Global.Settings.HTTPLocalPort}"); - var servers = ShareLink.ParseText(await WebUtil.DownloadStringAsync(request)); + List servers; + + var result = WebUtil.DownloadString(request, out var rep); + if (rep.StatusCode == HttpStatusCode.OK) + { + servers = ShareLink.ParseText(result); + } + else + { + throw new Exception($"{item.Remark} Response Status Code: {rep.StatusCode}"); + } foreach (var server in servers) { diff --git a/Netch/Utils/WebUtil.cs b/Netch/Utils/WebUtil.cs index fc6b615c..c183ad28 100644 --- a/Netch/Utils/WebUtil.cs +++ b/Netch/Utils/WebUtil.cs @@ -47,6 +47,22 @@ namespace Netch.Utils return memoryStream.ToArray(); } + /// + /// 异步下载并编码为字符串 + /// + /// + /// + /// 编码,默认UTF-8 + /// + public static string DownloadString(HttpWebRequest req, out HttpWebResponse rep, string encoding = "UTF-8") + { + rep = (HttpWebResponse) req.GetResponse(); + using var responseStream = rep.GetResponseStream(); + using var streamReader = new StreamReader(responseStream, Encoding.GetEncoding(encoding)); + + return streamReader.ReadToEnd(); + } + /// /// 异步下载并编码为字符串 ///