初始化上传
This commit is contained in:
271
常用工具集/ViewModels/02网络相关/HTTP调试ViewModel.cs
Normal file
271
常用工具集/ViewModels/02网络相关/HTTP调试ViewModel.cs
Normal file
@@ -0,0 +1,271 @@
|
||||
using MES.Utility.Core;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using 常用工具集.Base;
|
||||
using System.Threading;
|
||||
using 常用工具集.Utility.Network;
|
||||
using System.IO;
|
||||
using Ursa.Controls;
|
||||
using Avalonia.Threading;
|
||||
using Avalonia.Platform.Storage;
|
||||
|
||||
namespace 常用工具集.ViewModel._02网络相关
|
||||
{
|
||||
public class HTTP调试ViewModel : ViewModelBase
|
||||
{
|
||||
private bool getChecked = true;
|
||||
public bool GetChecked
|
||||
{
|
||||
get { return getChecked; }
|
||||
set
|
||||
{
|
||||
getChecked = value;
|
||||
if (value)
|
||||
{
|
||||
Visiable =false;
|
||||
}
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
private bool downloadChecked = false;
|
||||
public bool DownloadChecked
|
||||
{
|
||||
get { return downloadChecked; }
|
||||
set
|
||||
{
|
||||
downloadChecked = value;
|
||||
if (value)
|
||||
{
|
||||
Visiable = false;
|
||||
}
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
private bool postChecked = false;
|
||||
public bool PostChecked
|
||||
{
|
||||
get { return postChecked; }
|
||||
set
|
||||
{
|
||||
postChecked = value;
|
||||
if (value)
|
||||
{
|
||||
Visiable = true;
|
||||
}
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public string Url { get; set; } = "";
|
||||
|
||||
public DelegateCommand ButtonCmd { get; set; }
|
||||
|
||||
public bool JsonChecked { get; set; } = true;
|
||||
public bool FormChecked { get; set; } = false;
|
||||
|
||||
public int Timeout { get; set; } = 1000;
|
||||
|
||||
public bool Visiable { get; set; } = false;
|
||||
|
||||
public string Parms { get; set; } = "";
|
||||
public string Result { get; set; } = "";
|
||||
public bool ButtonEnabled { get; set; } = true;
|
||||
public HTTP调试ViewModel()
|
||||
{
|
||||
ButtonCmd = new DelegateCommand(ButtonCmdFunc);
|
||||
}
|
||||
|
||||
private void ButtonCmdFunc(object obj)
|
||||
{
|
||||
if (Url.IsNullOrEmpty())
|
||||
{
|
||||
MessageBox.ShowAsync("请输入URL");
|
||||
return;
|
||||
}
|
||||
string url = Url;
|
||||
if (!url.ToLower().StartsWith("http"))
|
||||
{
|
||||
url = "http://" + url;
|
||||
}
|
||||
int timeout = Timeout;
|
||||
if (GetChecked)
|
||||
{
|
||||
Dictionary<string, string> dict = new Dictionary<string, string>();
|
||||
if (url.Contains("?"))
|
||||
{
|
||||
int index = url.IndexOf("?");
|
||||
string parms = url.Substring(index + 1, url.Length - index - 1);
|
||||
string[] parmsArray = parms.Split('&');
|
||||
foreach (string parm in parmsArray)
|
||||
{
|
||||
if (parm.Contains("="))
|
||||
{
|
||||
string[] array = parm.Split('=');
|
||||
dict.Add(array[0], array[1]);
|
||||
}
|
||||
}
|
||||
parmsArray = Parms.Split('&');
|
||||
foreach (string parm in parmsArray)
|
||||
{
|
||||
if (parm.Contains("="))
|
||||
{
|
||||
string[] array = parm.Split('=');
|
||||
dict.Add(array[0], array[1]);
|
||||
}
|
||||
}
|
||||
url = url.Substring(0, index);
|
||||
}
|
||||
else
|
||||
{
|
||||
string[] parmsArray = Parms.Split('&');
|
||||
foreach (string parm in parmsArray)
|
||||
{
|
||||
if (parm.Contains("="))
|
||||
{
|
||||
string[] array = parm.Split('=');
|
||||
dict.Add(array[0], array[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
ButtonEnabled = false;
|
||||
Result = string.Empty;
|
||||
new Thread(() =>
|
||||
{
|
||||
string ret = HttpUtils.DoGet(url, dict, timeout);
|
||||
if (!ret.IsNullOrEmpty())
|
||||
{
|
||||
Result = ret;
|
||||
}
|
||||
else
|
||||
{
|
||||
Result = "网络或服务器异常";
|
||||
}
|
||||
ButtonEnabled = true;
|
||||
}).Start();
|
||||
}
|
||||
else if (DownloadChecked)
|
||||
{
|
||||
Dictionary<string, string> dict = new Dictionary<string, string>();
|
||||
if (url.Contains("?"))
|
||||
{
|
||||
int index = url.IndexOf("?");
|
||||
string parms = url.Substring(index + 1, url.Length - index - 1);
|
||||
string[] parmsArray = parms.Split('&');
|
||||
foreach (string parm in parmsArray)
|
||||
{
|
||||
if (parm.Contains("="))
|
||||
{
|
||||
string[] array = parm.Split('=');
|
||||
dict.Add(array[0], array[1]);
|
||||
}
|
||||
}
|
||||
parmsArray = Parms.Split('&');
|
||||
foreach (string parm in parmsArray)
|
||||
{
|
||||
if (parm.Contains("="))
|
||||
{
|
||||
string[] array = parm.Split('=');
|
||||
dict.Add(array[0], array[1]);
|
||||
}
|
||||
}
|
||||
url = url.Substring(0, index);
|
||||
}
|
||||
else
|
||||
{
|
||||
string[] parmsArray = Parms.Split('&');
|
||||
foreach (string parm in parmsArray)
|
||||
{
|
||||
if (parm.Contains("="))
|
||||
{
|
||||
string[] array = parm.Split('=');
|
||||
dict.Add(array[0], array[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
ButtonEnabled = false;
|
||||
Result = string.Empty;
|
||||
new Thread(() =>
|
||||
{
|
||||
byte[] ret = HttpUtils.DoGetFile(url, timeout);
|
||||
if (ret == null)
|
||||
{
|
||||
Result = "网络或服务器异常";
|
||||
}
|
||||
else
|
||||
{
|
||||
Dispatcher.UIThread.Invoke(async () =>
|
||||
{
|
||||
var sp = GlobalValues.StorageProvider;
|
||||
if (sp is null) return;
|
||||
var result = await sp.SaveFilePickerAsync(new FilePickerSaveOptions()
|
||||
{
|
||||
Title = "保存文件"
|
||||
});
|
||||
if (result == null) return;
|
||||
string filePath = result.Path.LocalPath;
|
||||
using (FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
|
||||
{
|
||||
fs.Write(ret, 0, ret.Length);
|
||||
}
|
||||
await MessageBox.ShowAsync("下载完成");
|
||||
});
|
||||
}
|
||||
ButtonEnabled = true;
|
||||
}).Start();
|
||||
}
|
||||
else
|
||||
{
|
||||
//JSON
|
||||
if (JsonChecked)
|
||||
{
|
||||
|
||||
ButtonEnabled = false;
|
||||
Result = string.Empty;
|
||||
new Thread(() =>
|
||||
{
|
||||
string ret = HttpUtils.DoPostJson(url, Parms, timeout);
|
||||
if (!ret.IsNullOrEmpty())
|
||||
{
|
||||
Result = ret;
|
||||
}
|
||||
else
|
||||
{
|
||||
Result = "网络或服务器异常";
|
||||
}
|
||||
ButtonEnabled = true;
|
||||
}).Start();
|
||||
}
|
||||
else
|
||||
{
|
||||
Dictionary<string, string> dict = new Dictionary<string, string>();
|
||||
|
||||
string[] parmsArray = Parms.Split('&');
|
||||
foreach (string parm in parmsArray)
|
||||
{
|
||||
if (parm.Contains("="))
|
||||
{
|
||||
string[] array = parm.Split('=');
|
||||
dict.Add(array[0], array[1]);
|
||||
}
|
||||
}
|
||||
ButtonEnabled = false;
|
||||
Result = string.Empty;
|
||||
new Thread(() =>
|
||||
{
|
||||
string ret = HttpUtils.DoPostForm(url, dict, timeout);
|
||||
if (!ret.IsNullOrEmpty())
|
||||
{
|
||||
Result = ret;
|
||||
}
|
||||
else
|
||||
{
|
||||
Result = "网络或服务器异常";
|
||||
}
|
||||
ButtonEnabled = true;
|
||||
}).Start();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user