|
机智云的图形验证码可以作为短信验证码的获取,短信验证码关系到手机号用户注册,手机号用户重置密码,其他您认为需要短信验证码的敏感操作,因此获取图形验证码是一个必要的前置操作。
首先,我们在form里放置button和picturebox button用于发送请求,picutrebox用于显示图像
接下来,我们先定义需要的变量和api接口,用于传输请求需要的参数和存放获取到的图形数据
然后,就是请求接口得到图形的url了,使用httpclient构建一个同步的请求即可,代码如下:
- using (HttpClient client = new HttpClient())
- {
- // 添加请求头
- client.DefaultRequestHeaders.Add("X-Gizwits-Application-Token", applicationToken);
- client.DefaultRequestHeaders.Add("X-Gizwits-Application-Id", applicationId);
- try
- {
- // 发送GET请求
- HttpResponseMessage response = client.GetAsync(apiUrl).Result;
- // 检查响应状态码
- if (response.IsSuccessStatusCode)
- {
- // 解析JSON响应数据
- string jsonResponse = response.Content.ReadAsStringAsync().Result;
- JObject json = JObject.Parse(jsonResponse);
- // 获取captcha_url
- string captchaUrl = json["captcha_url"].ToString();
- string captchaId = json["captcha_id"].ToString();
- Console.WriteLine("captcha_url: " + captchaUrl);
- Console.WriteLine("captcha_id: " + captchaId);
- imageUrl = captchaUrl;
- }
- else
- {
- Console.WriteLine("请求失败: " + response.StatusCode);
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("发生异常: " + ex.Message);
- }
- }
复制代码 请求到json后,我们还要取出里面的url并且再次发送请求得到图像数据:
- using (HttpClient client = new HttpClient())
- {
- try
- {
- // 发送 GET 请求获取图像
- HttpResponseMessage response = client.GetAsync(imageUrl).Result;
- // 检查响应状态码
- if (response.IsSuccessStatusCode)
- {
- // 将响应内容读取为字节数组并赋值给全局变量
- imageBytes = response.Content.ReadAsByteArrayAsync().Result;
- // 此时,图像数据存储在 imageBytes 中
- // 可以在整个程序中访问 imageBytes
- Console.WriteLine("成功获取图像,字节数:" + imageBytes.Length);
- }
- else
- {
- Console.WriteLine("请求失败: " + response.StatusCode);
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("发生异常: " + ex.Message);
- }
- }
复制代码 得到图像原始的数据后,我们要把图像加载到内存,赋给picturebox显示,代码如下:
- if(imageBytes != null)
- {
- using (System.IO.MemoryStream stream = new System.IO.MemoryStream(imageBytes))
- {
- pictureBox1.Image = System.Drawing.Image.FromStream(stream);
- }
- }
复制代码
完成后,我们运行看一下效果:
|
|