• 科大讯飞接口 ASP.NET C# 实现


    using System;
    using System.Text;
    using System.Web.UI.WebControls;
    using System.IO;
    using System.Net;
    using System.Security.Cryptography;
    
    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
    
    
    
    
    
    
        }
    
        protected void Button1_Click(object sender, EventArgs e)
        {
            AppSettings _settings = new AppSettings(); 
          
            string imgData = ReadImgToString(FileUpload1);
            Uri url = new Uri(_settings.Url);
    
    
    
            string body = "{\"common\":{\"app_id\":\""+_settings.AppID+ "\"}, \"business\":{ \"ent\":\"teach-photo-print\",  \"aue\" :\"raw\"   },\"data\":{\"image\":\""+ imgData+"\"}}";
            string digestBase64 = "SHA-256=" + HMACSha256(body);
    
    
            DateTime basic = DateTime.UtcNow;
            string date = basic.ToString("r");
            string signatureOrigin = "host: " + url.Host + "\ndate: " + date + "\nPOST /v2/itr HTTP/1.1\ndigest: " + digestBase64;
            string sha = HMAC_SHA256(signatureOrigin, _settings.ApiSecret);
    
            string authorization = "api_key=\"" + _settings.ApiKey + "\", algorithm=\"hmac-sha256\", headers=\"host date request-line digest\", signature=\"" + sha + "\"";
          
    
    
    
            HttpWebRequest request =  (HttpWebRequest)HttpWebRequest.Create(_settings.Url);
            request.Method = "POST";
            request.ContentType = "application/json";
            request.Host = url.Host;
            request.Date = basic;
            request.Headers.Set("Digest", digestBase64);  
            request.Headers.Set("Authorization", authorization); 
    
           
              
    
            byte[] postBytes = null;
            postBytes = Encoding.UTF8.GetBytes(body);
            request.ContentLength = postBytes.Length;
    
            using (Stream reqStream = request.GetRequestStream())
            {
                reqStream.Write(postBytes, 0, postBytes.Length);
            }
    
            string result = string.Empty;
    
            using (WebResponse response = request.GetResponse())
            {
                if (response != null)
                {
                    using (Stream stream = response.GetResponseStream())
                    {
                        using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
                        {
                            result = reader.ReadToEnd();
                        }
                    }
    
                }
            }
    
            Response.Write(result);
      
    
    
        }
     
    
          private string HMAC_SHA256(string message, string secret)
        {
      
            byte[] keyByte = System.Text.Encoding.UTF8.GetBytes(secret); 
            byte[] messageBytes = System.Text.Encoding.UTF8.GetBytes(message);
    
            HMACSHA256 hmacsha256 = new HMACSHA256(keyByte);
           
            byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
       
            return Convert.ToBase64String(hashmessage);
            
        }
    
    
    
    
        private static string HMACSha256(string body)
        {
    
            HMACSHA256 hMACSHA256 = new HMACSHA256(); 
            byte[] date = Encoding.UTF8.GetBytes(body);
            date = hMACSHA256.ComputeHash(date);
            hMACSHA256.Clear();
            return System.Convert.ToBase64String(date);
           
        }
    
    
    
    
        public string ReadImgToString(FileUpload f)
        {
            Stream fstream = f.PostedFile.InputStream;
            byte[] imgData = new byte[fstream.Length];
            fstream.Read(imgData, 0, imgData.Length);
            fstream.Close();
            string imgdata = Convert.ToBase64String(imgData);
            return imgdata;
    
        }
    
    
    
    }
    

      下面是一个简单的类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
     
        public class AppSettings
        {
     
        public string AppID = "5666666665"; 
        public string ApiSecret = "7c6667fd0fb0034e0d2df6263d678efd"; 
        public string ApiKey = "b9ed1e666d01f74905b17bc3b9a4063"; 
        public string Url  = "http://rest-api.xfyun.cn/v2/itr";
    
          
        }
     
    

      

  • 相关阅读:
    ubuntu19.04 redis启动和停止及连接
    ubuntu Redis安装及配置
    Django 基本使用及目录结构
    selenium设置chrome请求头
    多进程爬虫python——实例爬取酷狗歌单
    2020第一周学习记录
    爬取博客园最新文章
    python下用selenium的webdriver包如何在执行完点击下一页后没有获得下一页新打开页面的html源代码
    质量属性六个常见属性《钉钉》场景分析
    warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '报错
  • 原文地址:https://www.cnblogs.com/mqingqing123/p/16006875.html
Copyright © 2020-2023  润新知