tnblog
首页
视频
资源
登录
愿你出走半生,归来仍是少年
排名
3
文章
317
粉丝
22
评论
14
bootstrap 栅格布局一小例子
剑轩 : 后端写样式有点痛苦哇
一点flex布局的运用
剑轩 : 后端写样式有点痛苦哇
vue.js常用指令
剑轩 : 可以可以,多总结一点
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

c#调用阿里云实现图像打标

5124人阅读 2020/2/17 17:04 总访问:2060936 评论:0 收藏:0 手机
分类: 人工智能

url方式:

  1. public void Invoke()
  2. {
  3.     //ak,sk信息设置
  4.     string ak_id = "your ak_id";
  5.     string ak_secret = "your ak_secret";
  6.     string method = "POST";
  7.     string accept = "application/json";
  8.     string contentType = accept;
  9.     string body = "{\"type\":0, \"image_url\":\"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1581938602023&di=d760709c2b6602b0b7d470de2e1f691d&imgtype=0&src=http%3A%2F%2Fimg.mm4000.com%2Ffile%2Fc%2F7d%2F0e31e767b7_800.jpg\"}";
  10.     byte[] data = Encoding.ASCII.GetBytes(body);
  11.     string date = DateTime.UtcNow.GetDateTimeFormats('r')[0].ToString();
  12.     string urlpra = "/image/tag";
  13.     string bodyMd5 = Convert.ToBase64String(new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(body)));
  14.     string result = "";
  15.     //待加密
  16.     string stringToSign = method + "\n" + accept + "\n" + bodyMd5 + "\n" + contentType + "\n" + date + "\n" + urlpra;
  17.     //stringToSign计算 HMAC-SHA1得到signature
  18.     string signature = Convert.ToBase64String(new System.Security.Cryptography.HMACSHA1(Encoding.UTF8.GetBytes(ak_secret)).ComputeHash(Encoding.UTF8.GetBytes(stringToSign)));
  19.     //得到 authorization header
  20.     string authHeader = "Dataplus " + ak_id + ":" + signature;
  21.     WebRequest req = WebRequest.Create("https://dtplus-cn-shanghai.data.aliyuncs.com/image/tag");
  22.     req.Method = method;
  23.     req.ContentType = accept;
  24.     req.GetRequestStream().Write(data, 0, data.Length);
  25.     //利用解决:"此标头必须使用适当的属性进行修改" 异常
  26.     MethodInfo priMethod = req.Headers.GetType().GetMethod("AddWithoutValidate", BindingFlags.Instance | BindingFlags.NonPublic);
  27.     priMethod.Invoke(req.Headers, new[] { "Date", date });
  28.     priMethod.Invoke(req.Headers, new[] { "Authorization", authHeader });
  29.     priMethod.Invoke(req.Headers, new[] { "Accept", accept });
  30.     string t = DateTime.UtcNow.GetDateTimeFormats('r')[0].ToString();
  31.     try
  32.     {
  33.         result = new StreamReader(req.GetResponse().GetResponseStream()).ReadToEnd();
  34.         Console.WriteLine("result:" + result);
  35.     }
  36.     catch (WebException e)
  37.     {
  38.         Console.WriteLine(e.GetBaseException());
  39.         Console.WriteLine(new StreamReader(e.Response.GetResponseStream()).ReadToEnd());
  40.     }
  41. }

base64方式:




欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价