[C#] 調用騰訊云接口 名片識別(v2)

        public ActionResult GetImgInfo(HttpPostedFileBase image)
        {
//            var stream = image.InputStream;
//            var bytes = new byte[stream.Length];
//            stream.Read(bytes, 0, bytes.Length);
//            // 設置當前流的位置為流的開始 
//            stream.Seek(0, SeekOrigin.Begin);
            var filename = image.FileName;
            var bytes = ImgHelper.GetPicThumbnail(image.InputStream, 50);
            var resstr = string.Empty;
            try
            {
                var webReq = (HttpWebRequest)WebRequest.Create("http://recognition.image.myqcloud.com/ocr/businesscard");
                webReq.Method = "POST";
                var boundary = "----" + DateTime.Now.Ticks.ToString("x");
                var formdataTemplate = "--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: application/octet-stream\r\n\r\n";
                var dataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
                var formdata = string.Format(formdataTemplate, "image", filename);
                webReq.ContentType = string.Format("multipart/form-data; boundary={0}", boundary);
                webReq.Host = "recognition.image.myqcloud.com";
                webReq.Headers.Add("authorization", GetSign());
                //文件頭
                var formdataByte = Encoding.ASCII.GetBytes(formdata);
                //尾
                var footer = Encoding.ASCII.GetBytes("\r\n--" + boundary + "--\r\n");
                Stream requestStream = webReq.GetRequestStream();
                requestStream.Write(formdataByte, 0, formdataByte.Length);//寫入 文件頭
                requestStream.Write(bytes, 0, bytes.Length);//寫入 文件
                var dataByte1 = Encoding.ASCII.GetBytes(string.Format(dataTemplate, "appid", "xxxxxx"));
                requestStream.Write(dataByte1, 0, dataByte1.Length);//寫入 參數1
                //var dataByte2 = Encoding.ASCII.GetBytes(string.Format(dataTemplate, "tid", 48650));
                //requestStream.Write(dataByte2, 0, dataByte2.Length);//寫入 參數2
                //var dataByte3 = Encoding.ASCII.GetBytes(string.Format(dataTemplate, "uid", 48650));
                //requestStream.Write(dataByte3, 0, dataByte3.Length);//寫入 參數3
                //var dataByte4 = Encoding.ASCII.GetBytes(string.Format(dataTemplate, "Filename", name));
                //requestStream.Write(dataByte4, 0, dataByte4.Length);//寫入 參數4
                //var dataByte5 = Encoding.ASCII.GetBytes(string.Format(dataTemplate, "Upload", "Submit Query"));
                //requestStream.Write(dataByte5, 0, dataByte5.Length);//寫入 參數5
                requestStream.Write(footer, 0, footer.Length);//寫入 尾
                requestStream.Close();
                var response = (HttpWebResponse)webReq.GetResponse();
                var sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                var res = sr.ReadToEnd();
                sr.Close();
                response.Close();
                resstr = res;
            }
            catch (WebException we)
            {
                if (we.Status != WebExceptionStatus.ProtocolError) return Json(resstr);
                using (var s = we.Response.GetResponseStream())
                {
                    var reader = new StreamReader(s, Encoding.UTF8);
                    resstr = reader.ReadToEnd();
                }
            }
            return Json(resstr);
        }

上面就是調用騰訊云的接口 利用 C# 后臺模擬form提交請求

把appid改成自己的騰訊云的id就可以用了

我在網上沒有搜到 C#的sdk 然后自己嘗試了后臺提交就是不好使, 后來找到模擬form表單提交的方法好使了, 主要就是提交的格式問題

此方法轉載https://blog.csdn.net/sh2015yao/article/details/39317299

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容