ZeroLauncher/dialog/RegDialog.xaml.cs

95 lines
2.5 KiB
C#
Raw Normal View History

2024-08-04 17:59:09 +08:00
using Newtonsoft.Json.Linq;
using System.Net.Http;
using System.Windows;
using System.Windows.Media.Imaging;
using Zerolauncher.Manager;
namespace Zerolauncher.dialog
{
/// <summary>
/// RegDialog.xaml 的交互逻辑
/// </summary>
public partial class RegDialog : Window
{
private HttpClient client;
private string user;
private string password;
public RegDialog(String acc, String pwd)
{
user = acc;
password = pwd;
InitializeComponent();
client = new();
FleshPic(null, null);
}
private async void FleshPic(object _, RoutedEventArgs e)
{
var main_ip = UpDateData.game_url;
HttpResponseMessage? response = null;
try
{
response = await client.GetAsync($"http://{main_ip}/module/captcha.php");
if (response != null)
{
foreach (var item in response.Headers)
Console.WriteLine($"{item.Key}");
}
//var bin = response.Content.ReadAsStream();
//verify = ocr.RunInference(new Bitmap(bin));
//using (var fileStream = File.Create("tmp.png"))
//{
// bin.Seek(0, SeekOrigin.Begin);//设置复制开始的地方
// bin.CopyTo(fileStream);
//}
using (var stream = response.Content.ReadAsStream())
{
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.CacheOption = BitmapCacheOption.OnLoad;
bitmap.StreamSource = stream;
bitmap.EndInit();
bitmap.Freeze(); // 为了线程安全
CapPic.Source = bitmap; // 设置Image控件的Source
}
}
catch (Exception ex)
{
Console.WriteLine($" 网络发生错误,类型:{ex.GetType().Name},消息:{ex.Message}");
}
}
private async void okButton_Click(object _, RoutedEventArgs e)
{
var main_ip = UpDateData.game_url;
var values = new Dictionary<string, string>
{
{ "rUsername", user },
{ "rPassword", password },
{ "rPasswords", password },
{ "rEmail", bottomMarginTextBox.Text },
{ "rCode", rightMarginTextBox.Text }
};
var content = new FormUrlEncodedContent(values);
try
{
var response = await client.PostAsync($"http://{main_ip}/form/register.php", content);
var src = await response.Content.ReadAsStringAsync();
var jsonObj = JObject.Parse(src);
MessageBox.Show(jsonObj["content"].ToString(), jsonObj["title"].ToString());
if(int.Parse(jsonObj["type"].ToString()) == 0) Close();
}
catch (Exception ex)
{
MessageBox.Show($"类型:{ex.GetType().Name},消息:{ex.Message}", "发生错误喵");
}
}
private void cancelButton_Click(object sender, RoutedEventArgs e)
{
Close();
}
}
}