diff --git a/v2rayN/v2rayN/Handler/DownloadHandle.cs b/v2rayN/v2rayN/Handler/DownloadHandle.cs
index 07f3fb9c..9a1569fe 100644
--- a/v2rayN/v2rayN/Handler/DownloadHandle.cs
+++ b/v2rayN/v2rayN/Handler/DownloadHandle.cs
@@ -121,19 +121,15 @@ namespace v2rayN.Handler
}
}
- ///
- /// DownloadString
- ///
- ///
- public async Task DownloadStringAsync(string url, bool blProxy, string userAgent)
+ public async Task TryDownloadString(string url, bool blProxy, string userAgent)
{
try
{
- Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().guiItem.enableSecurityProtocolTls13);
-
- var webProxy = GetWebProxy(blProxy);
- var result = await DownloaderHelper.Instance.DownloadStringAsync(webProxy, url, userAgent, 30);
- return result;
+ var result1 = await DownloadStringAsync(url, blProxy, userAgent);
+ if (!Utils.IsNullOrEmpty(result1))
+ {
+ return result1;
+ }
}
catch (Exception ex)
{
@@ -144,6 +140,48 @@ namespace v2rayN.Handler
Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
}
}
+
+ try
+ {
+ var result2 = await DownloadStringViaDownloader(url, blProxy, userAgent);
+ if (!Utils.IsNullOrEmpty(result2))
+ {
+ return result2;
+ }
+ }
+ catch (Exception ex)
+ {
+ Utils.SaveLog(ex.Message, ex);
+ Error?.Invoke(this, new ErrorEventArgs(ex));
+ if (ex.InnerException != null)
+ {
+ Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
+ }
+ }
+
+ try
+ {
+ using (var wc = new WebClient())
+ {
+ wc.Proxy = GetWebProxy(blProxy);
+ var result3 = await wc.DownloadStringTaskAsync(url);
+ if (!Utils.IsNullOrEmpty(result3))
+ {
+ return result3;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ Utils.SaveLog(ex.Message, ex);
+ Error?.Invoke(this, new ErrorEventArgs(ex));
+ if (ex.InnerException != null)
+ {
+ Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
+ }
+ }
+
+
return null;
}
@@ -151,7 +189,7 @@ namespace v2rayN.Handler
/// DownloadString
///
///
- public async Task DownloadStringAsyncOri(string url, bool blProxy, string userAgent)
+ public async Task DownloadStringAsync(string url, bool blProxy, string userAgent)
{
try
{
@@ -192,6 +230,38 @@ namespace v2rayN.Handler
return null;
}
+ ///
+ /// DownloadString
+ ///
+ ///
+ public async Task DownloadStringViaDownloader(string url, bool blProxy, string userAgent)
+ {
+ try
+ {
+ Utils.SetSecurityProtocol(LazyConfig.Instance.GetConfig().guiItem.enableSecurityProtocolTls13);
+
+ var webProxy = GetWebProxy(blProxy);
+
+ if (Utils.IsNullOrEmpty(userAgent))
+ {
+ userAgent = $"{Utils.GetVersion(false)}";
+ }
+ var result = await DownloaderHelper.Instance.DownloadStringAsync(webProxy, url, userAgent, 30);
+ return result;
+ }
+ catch (Exception ex)
+ {
+ Utils.SaveLog(ex.Message, ex);
+ Error?.Invoke(this, new ErrorEventArgs(ex));
+ if (ex.InnerException != null)
+ {
+ Error?.Invoke(this, new ErrorEventArgs(ex.InnerException));
+ }
+ }
+ return null;
+ }
+
+
public int RunAvailabilityCheck(WebProxy webProxy)
{
try
diff --git a/v2rayN/v2rayN/Handler/UpdateHandle.cs b/v2rayN/v2rayN/Handler/UpdateHandle.cs
index ab1eab67..a3ba3777 100644
--- a/v2rayN/v2rayN/Handler/UpdateHandle.cs
+++ b/v2rayN/v2rayN/Handler/UpdateHandle.cs
@@ -213,10 +213,10 @@ namespace v2rayN.Handler
url = Utils.GetPunycode(url);
_updateFunc(false, $"{hashCode}{ResUI.MsgStartGettingSubscriptions}");
- var result = await downloadHandle.DownloadStringAsync(url, blProxy, userAgent);
+ var result = await downloadHandle.TryDownloadString(url, blProxy, userAgent);
if (blProxy && Utils.IsNullOrEmpty(result))
{
- result = await downloadHandle.DownloadStringAsync(url, false, userAgent);
+ result = await downloadHandle.TryDownloadString(url, false, userAgent);
}
if (Utils.IsNullOrEmpty(result))
@@ -328,7 +328,7 @@ namespace v2rayN.Handler
var coreInfo = LazyConfig.Instance.GetCoreInfo(type);
string url = coreInfo.coreReleaseApiUrl;
- var result = await (new DownloadHandle()).DownloadStringAsyncOri(url, true, "");
+ var result = await (new DownloadHandle()).DownloadStringAsync(url, true, "");
if (!Utils.IsNullOrEmpty(result))
{
responseHandler(type, result, preRelease);