c#

C#开发笔记 #

网络请求 #

using System.Collections.Generic;
using System.Diagnostics;
using System.Text.Json.Nodes;



string cookie = "";
var handler = new HttpClientHandler();
using (var httpClient = new HttpClient(handler))
{
    using (var request = new HttpRequestMessage(new HttpMethod("POST"), new Uri("https://cloud.yibailingshou.com/wsy_user/web/index.php?m=login&a=register_get_phone_code")))
    {

        var multipartContent = new MultipartFormDataContent();
        multipartContent.Add(new StringContent("17628818007"), "phone");
        multipartContent.Add(new StringContent("czo0OiI5NTY1Ijs"), "customer_id");
        multipartContent.Add(new StringContent("+86"), "country_code");
        multipartContent.Add(new StringContent(""), "captcha_token");//post data
        request.Headers.TryAddWithoutValidation("X-Requested-With", "XMLHttpRequest");//添加header
        request.Content = multipartContent;

        using (var response = await httpClient.SendAsync(request))
        {
            response.EnsureSuccessStatusCode();
            var body = await response.Content.ReadAsStringAsync();
            Console.WriteLine(body);// 响应正文
            Console.WriteLine(response);
            if (response.Headers.TryGetValues("Set-Cookie", out IEnumerable<string> cookieValues))
            {
                string ck = cookieValues.FirstOrDefault();//响应header中的Set-cookie
                Console.WriteLine(ck.Split(";")[0]);
            }
            dynamic result = JsonNode.Parse(body)!;//json解析
            if (result["errcode"].GetValue<int>() == 407)// json对象取值
            {
                //return "407";
            }
            else if (result["errcode"].GetValue<int>() == 0)
            {
                //return "0";
            }
            else
            {
                //return "false";
            }
        }

    }

}

AES加密 #

解密反之,易写

string Aesen(string text, string secret)
{

    // Input plaintext
    string plainText = "This is a secret message.";

    // Generate key

    byte[] key = Encoding.ASCII.GetBytes(secret);


    // Encrypt
    using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider())
    {
        aes.KeySize = 128;//相应的填充16=>128 32=>256
        aes.BlockSize = 128;
        aes.Key = key;
        aes.Padding = PaddingMode.PKCS7;
        aes.Mode = CipherMode.ECB;

        ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, null);
        byte[] plainBytes = Encoding.UTF8.GetBytes(text);
        byte[] encryptedBytes = encryptor.TransformFinalBlock(plainBytes, 0, plainBytes.Length);

        // Output ciphertext
        string cipherText = Convert.ToBase64String(encryptedBytes);
        Console.WriteLine("Ciphertext: " + cipherText);
        return cipherText;

    }
}

网络图片的保存 #

async Task SImg(string url, string filePath)
{


    using (var client = new HttpClient())
    {
        using (var response = await client.GetAsync(url))
        {
            using (var stream = await response.Content.ReadAsStreamAsync())
            {
                using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
                {
                    await stream.CopyToAsync(fileStream);
                }
            }
        }
    }
    Console.WriteLine("Image downloaded.");
}

缺口坐标识别(待优化 #

因为有些图中包含多个缺口,所有准确率有待优化

int GetImgX(string bg_path, string tg_path)
{
    Mat bg = Cv2.ImRead(bg_path);
    Mat tg = Cv2.ImRead(tg_path);
    Mat bg_gray = new Mat();
    Mat tg_gray = new Mat();
    Cv2.CvtColor(bg, bg_gray, ColorConversionCodes.BGR2GRAY);
    Cv2.CvtColor(tg, tg_gray, ColorConversionCodes.BGR2GRAY);
    int h = tg.Rows;
    int w = tg.Cols;
    Mat res = new Mat();
    Cv2.MatchTemplate(bg_gray, tg_gray, res, TemplateMatchModes.CCoeffNormed);
    double min_val, max_val;
    Point min_loc, max_loc;
    Cv2.MinMaxLoc(res, out min_val, out max_val, out min_loc, out max_loc);
    Console.WriteLine(max_loc);
    return (int)max_loc.X;
}