[login] 需要 lable1 pictureBox1 textBox5 button2 ``` using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using static System.Collections.Specialized.BitVector32; namespace GetToken { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private string pwd; private string user; private string token; private string url; private string baiduToken; private string base64YZM; private string yzm; private void button1_Click(object sender, EventArgs e) { pwd= textBox3.Text; user = textBox2.Text; url = textBox1.Text; string path = AppDomain.CurrentDomain.BaseDirectory + "config.json"; string json = File.ReadAllText(path); dynamic obj = JsonConvert.DeserializeObject(json); obj.pwd = textBox3.Text; obj.user = textBox2.Text; obj.url = textBox1.Text; string jsonStr = JsonConvert.SerializeObject(obj); File.WriteAllText(path, jsonStr); } private void Form1_Load(object sender, EventArgs e) { //读配置文件 运行目录 config.json string path = AppDomain.CurrentDomain.BaseDirectory + "config.json"; string json = null; try { json=File.ReadAllText(path); } catch (Exception ex) { } if (json == null) { pwd = @"admin@2023"; user = @"admin"; url = @"http://127.0.0.1:9000"; //保存配置文件 dynamic obj = new { pwd = pwd, user = user, url = url }; string jsonStr = JsonConvert.SerializeObject(obj); File.WriteAllText(path, jsonStr); } else { dynamic obj = JsonConvert.DeserializeObject(json); pwd = obj.pwd; user = obj.user; url = obj.url; } textBox1.Text = url; textBox2.Text = user; textBox3.Text = pwd; } //获取验证码 private void GetToken() { //获取验证码 string yzmUrl = url + "/jeecg-boot/sys/randomImage/1"; WebClient webClient = new WebClient(); string yzmJson = ""; try { yzmJson = webClient.DownloadString(yzmUrl); }catch (Exception ex) { MessageBox.Show("验证码获取失败"); return; } dynamic yzmObj = JsonConvert.DeserializeObject(yzmJson); string img = yzmObj.result; //去除data:image/jpg;base64, img = img.Substring(22); base64YZM = img; byte[] imgByte = Convert.FromBase64String(img); MemoryStream ms = new MemoryStream(imgByte); pictureBox1.Image = Image.FromStream(ms); //获取百度token baiduTokenGet(); //百度ocr string yzm = baiduOCR(); textBox5.Text = yzm; login(yzm); } //登陆 private void login(string yzm) { string loginUrl = url + "/jeecg-boot/sys/login"; WebClient webClient = new WebClient(); webClient.Encoding = System.Text.Encoding.GetEncoding("UTF-8"); dynamic loginObj = new { username = user, password = pwd, captcha = yzm, checkKey = 1 }; string loginJson = JsonConvert.SerializeObject(loginObj); webClient.Headers.Add("Content-Type", "application/json"); string result = webClient.UploadString(loginUrl, "POST", loginJson); //utf-8编码 result = Encoding.UTF8.GetString(Encoding.Default.GetBytes(result)); dynamic loginrep = JsonConvert.DeserializeObject(result); try { token = loginrep.result.token; textBox4.Text = token; } catch (Exception ex) { textBox4.Text = loginrep.message; } } private void baiduTokenGet() { string baiduapi = "https://aip.baidubce.com/oauth/2.0/token"; string client_id = "GBF1x7WYeeLW6gvjUKut9Z3S"; string client_secret = "xwDC17VTXPyKi6R9jDvrcVRIGwjNRhOD"; WebClient webClient = new WebClient(); //post提交 NameValueCollection postData = new NameValueCollection(){ { "grant_type", "client_credentials" }, { "client_id", client_id }, { "client_secret", client_secret } }; // 注意: UploadValues 默认执行的是 POST 请求 byte[] responseBytes = webClient.UploadValues(baiduapi, "POST", postData); string result = Encoding.UTF8.GetString(responseBytes); dynamic baiduTokenObj = JsonConvert.DeserializeObject(result); baiduToken = baiduTokenObj.access_token; } private string baiduOCR() { string baiduapi = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"; WebClient webClient = new WebClient(); webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); webClient.Headers.Add("charset", "UTF-8"); webClient.Headers.Add("Authorization", "Bearer " + baiduToken); //post提交 // “access_token=” + baiduToken + “&image=” + 编码_URL编码 (img) + “&detect_direction=false” + “&detect_language=false&vertexes_location=false¶graph=false&probability=false”) NameValueCollection postData = new NameValueCollection() { { "access_token",baiduToken}, { "image",base64YZM}, { "detect_direction","false"}, { "detect_language","false"}, { "vertexes_location","false"}, { "paragraph","false"}, { "probability","false"} }; // 注意: UploadValues 默认执行的是 POST 请求 byte[] responseBytes = webClient.UploadValues(baiduapi, "POST", postData); string result = Encoding.UTF8.GetString(responseBytes); dynamic baiduOCR = JsonConvert.DeserializeObject(result); string words = baiduOCR.words_result[0].words; //words去除空格 words = words.Replace(" ", ""); return words; } private void pictureBox1_MouseDown_1(object sender, MouseEventArgs e) { GetToken(); label1.Visible = false; } private void label1_Click_1(object sender, EventArgs e) { GetToken(); label1.Visible = false; } private void textBox1_TextChanged(object sender, EventArgs e) { url = textBox1.Text; } private void textBox2_TextChanged(object sender, EventArgs e) { user = textBox2.Text; } private void textBox3_TextChanged(object sender, EventArgs e) { pwd = textBox3.Text; } private void button2_Click(object sender, EventArgs e) { //复制token Clipboard.SetText(textBox4.Text); } } } ``` [/login] 该部分仅登录用户可见 最后修改:2024 年 05 月 09 日 © 允许规范转载 打赏 赞赏作者 赞 如果觉得我的文章对你有用,请随意赞赏