c#获取图形验证码实例
机智云的图形验证码可以作为短信验证码的获取,短信验证码关系到手机号用户注册,手机号用户重置密码,其他您认为需要短信验证码的敏感操作,因此获取图形验证码是一个必要的前置操作。首先,我们在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);
}
}
完成后,我们运行看一下效果:
页:
[1]