network issues

This commit is contained in:
2020-05-05 02:21:09 +08:00
parent 5e403a86d7
commit 0ce7757ec4
2 changed files with 68 additions and 13 deletions

View File

@@ -6,6 +6,7 @@ using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Xamarin.Essentials;
using Xamarin.Forms;
namespace Pixiview.Utils
@@ -19,6 +20,22 @@ namespace Pixiview.Utils
private const string userFolder = "user-profile";
private const string illustFile = "illust.json";
public static bool NetworkAvailable
{
get
{
try
{
return Connectivity.NetworkAccess == NetworkAccess.Internet
|| Connectivity.NetworkAccess == NetworkAccess.ConstrainedInternet;
}
catch
{
return false;
}
}
}
public static async Task<IllustData> LoadIllustData()
{
var file = Path.Combine(PersonalFolder, illustFile);
@@ -144,6 +161,7 @@ namespace Pixiview.Utils
catch (Exception ex)
{
tries++;
System.Threading.Thread.Sleep(400);
App.DebugError("try.do", $"tries: {tries}, error: {ex.Message}");
}
}
@@ -163,28 +181,31 @@ namespace Pixiview.Utils
{
BaseAddress = new Uri($"{uri.Scheme}://{uri.Host}")
};
using (var request = new HttpRequestMessage(HttpMethod.Get, uri.PathAndQuery)
return TryCount(() =>
{
Version = new Version(2, 0)
})
{
request.Headers.Referrer = referer == null ? Configs.Referer : new Uri(referer);
request.Headers.Add("user-agent", Configs.UserAgent);
if (headers != null)
using (var request = new HttpRequestMessage(HttpMethod.Get, uri.PathAndQuery)
{
foreach (var (header, value) in headers)
Version = new Version(2, 0)
})
{
request.Headers.Referrer = referer == null ? Configs.Referer : new Uri(referer);
request.Headers.Add("user-agent", Configs.UserAgent);
if (headers != null)
{
request.Headers.Add(header, value);
foreach (var (header, value) in headers)
{
request.Headers.Add(header, value);
}
}
return client.SendAsync(request).Result;
}
return TryCount(() => client.SendAsync(request).Result);
}
});
}
}
public static class Configs
{
public static readonly WebProxy Proxy = new WebProxy("10.0.10.100", 8088);
public static readonly WebProxy Proxy = new WebProxy("router.tsanie.us", 8088);
public static readonly Uri Referer = new Uri("https://www.pixiv.net/");
public const int MaxThreads = 3;