前端TS示例:
var ServerURL: string = "https://localhost:7053/";
var ClockNo: number = window.setInterval(clock, 1000);//设定定时器
//window.clearInterval(ClockNo);//取消定时器
function clock() { //定时处理函数,这里每分钟和服务器通讯,更新登录授权的 Token
postData("Home/KeepAlive", MyStatus)
.then(response => {
MyStatus =response;
console.log(MyStatus);
})
.catch(error => { console.error(error) });
}
let MyStatus = {
UserName: "MyName姓名",
PSW: "123456",
AliveTime: "2024/02/28 19:42:52.852",
Loading: false,
Token:"111254211"
}
//通过讯飞星火获得的函数,可以调用函数体内部实现返回值的处理。
//TypeScript需要 ES2015以上版本
async function postData(UrlRout: string, data: any): Promise<any> {
const response = await fetch(ServerURL + UrlRout, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return await response.json();
}
//XMLHttpRequest版本,可以正常POST 和获得返回,
//但目前不能实现再调用的函数体内返回,脱离调用者,使用不方便
//TypeScript中 ES5 可用
function POST_mssage(msg: string, UrlRout: string) {
var httpRequest: XMLHttpRequest = new XMLHttpRequest();
httpRequest.open('POST', ServerURL + UrlRout, true);
httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
httpRequest.send(msg);
httpRequest.onreadystatechange = function (ev: Event) {
if (httpRequest.readyState == XMLHttpRequest.DONE && httpRequest.status == 200) {//验证请求是否发送成功
var json = httpRequest.responseText;//获取到服务端返回的数据
console.log(json);
}
}
}
后端C#示例
1:定义一个User类,接收Json类
using System.Runtime.CompilerServices;
namespace qsPJTm.Models
{
public class USER
{
public string UserName { get; set; } //用户名
public string PSW { get; set; } //密码,登录前为明文,登录后为加密
public string AliveTime { get; set; } //最近的保活通讯
public bool Loading { get; set; } //登录的状态
public string Token { get; set; } //USER+PSW+ALIVE 再加密
}
}
2:HomeController 中 收发Json
public string KeepAlive()
{
string str= Request.Scheme;
StreamReader sr = new StreamReader(Request.Body);
string msg=sr.ReadToEndAsync().Result;
USER me=JsonSerializer.Deserialize<USER>(msg,JsonSerializerOptions.Default);
me.AliveTime=DateTime.Now.ToString();
//JsonSerializerOptions options = new JsonSerializerOptions();
//options.Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
//msg=JsonSerializer.Serialize(me,options);
msg = JsonSerializer.Serialize(me);
return msg;
}