欢迎您来到腾讯云!积分商城

腾讯云腾讯云论坛

 找回密码
 立即注册
忘了密码?

扫一扫,访问微社区

快捷导航
搜索
查看: 182|回复: 1

[咨询求助] -------------------使用人脸核身,为什么提示400错误呢-----------

[复制链接]

1

主题

0

好友

100

积分

小白[LV1]

Rank: 1

云币
320
威望
100
发表于 2018-1-14 20:22:29 |显示全部楼层 |未分类
用的是C#进行的web浏览器打开测试,
但是为什么返回"远程服务器返回错误: (400) 错误的请求"错误呢,信息应该是没有错的.

protected void Button1_Click(object sender, EventArgs e)
        {

            System.Net.WebClient webClient = new System.Net.WebClient();
            System.Collections.Specialized.NameValueCollection PostVars = new System.Collections.Specialized.NameValueCollection();
            PostVars.Add("appid", "1234567890");//appid
            PostVars.Add("idcard_number", "666666666666666666");//身份证号
            PostVars.Add("idcard_name", "老王");//姓名
            PostVars.Add("url", "http://www.xxxxxxxx.com/id1.jpg");//身份证图片
            PostVars.Add("session_id", "123456789000");

            webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            webClient.Headers.Add("Authorization", EntrySign());
            try
            {
                byte[] byRemoteInfo = webClient.UploadValues("http://service.image.myqcloud.com/face/idcardcompare", "POST", PostVars);
                //下面都没用啦,就上面一句话就可以了
                string sRemoteInfo = System.Text.Encoding.Default.GetString(byRemoteInfo);
                //这是获取返回信息
                TextBox1.Text += sRemoteInfo;
            }
            catch (System.Exception ex)
            {
                Response.Write(ex.ToString());
            }

        }



1

主题

0

好友

100

积分

小白[LV1]

Rank: 1

云币
320
威望
100
发表于 2018-1-15 20:48:26 |显示全部楼层
我是楼主,完整的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
            string secret_id = "****";
            string secret_key = "****";

  /// <summary>
        /// 消息抽样加密算法
        /// </summary>
        /// <param name="text"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        public static string HmacSha1Sign(string text, string key)
        {
            Encoding encode = Encoding.GetEncoding("utf-8");
            byte[] byteData = encode.GetBytes(text);
            byte[] byteKey = encode.GetBytes(key);
            HMACSHA1 hmac = new HMACSHA1(byteKey);
            CryptoStream cs = new CryptoStream(Stream.Null, hmac, CryptoStreamMode.Write);
            cs.Write(byteData, 0, byteData.Length);
            cs.Close();
            return Convert.ToBase64String(hmac.Hash);
        }

/// <summary>
        /// Base64加密
        /// </summary>
        /// <param name="encode">加密采用的编码方式</param>
        /// <param name="source">待加密的明文</param>
        /// <returns></returns>
        public static string EncodeBase64(Encoding encode, string source)
        {
            string enString = "";
            byte[] bytes = encode.GetBytes(source);
            try
            {
                enString = Convert.ToBase64String(bytes);
            }
            catch
            {
                enString = source;
            }
            return enString;
        }

        /// <summary>
        /// Base64加密,采用utf8编码方式加密
        /// </summary>
        /// <param name="source">待加密的明文</param>
        /// <returns>加密后的字符串</returns>
        public static string EncodeBase64(string source)
        {
            return EncodeBase64(Encoding.UTF8, source);
        }



        /// <summary>
        /// 拼接原文
        /// </summary>
        /// <returns></returns>
        private string signStr()
        {
            /*
            a    开发者的项目ID,接入万象优图创建空间时系统生成的唯一标示项目的项目ID
            b    图片空间(存储桶)名称
            k    项目的 Secret ID
            e    签名的有效期,是一个符合 UNIX Epoch 时间戳规范的数值,单位为秒;单次签名时,e 必须设置为 0
            t    当前时间戳,是一个符合 UNIX Epoch 时间戳规范的数值,单位为秒,多次签名时,e 应大于 t
            r    随机串,无符号 10 进制整数,用户需自行生成,最长10 位
            u    历史遗留字段,请填 ‘0’
            f    资源存储的唯一标识,单次签名必填;多次签名选填,如填写则会验证与当前操作的文件路径是否一致。
             */
            string appid = "1234567890";
            string bucket = "tencentyun";
            //string secret_id = "****";
            //string secret_key = "****";
            long expired = GetTimeStampTen() + 2592000;
            string onceExpired = "0";
            long current = GetTimeStampTen();
            string rdm = rand(10);
            string userid = "0";
            string fileid = "";
            //不绑定资源
            string returnStr = "a=[" + appid + "]&b=[" + bucket + "]&k=[" + secret_id + "]&e=[" + Convert.ToString(expired) + "]&t=[" + Convert.ToString(current) + "]&r=[" + rdm + "]&u=[" + userid + "]&f=[" + fileid + "]";
            return returnStr;

        }

        /// <summary>
        /// 取得按规则取得的签名
        /// </summary>
        /// <returns></returns>
        private string EntrySign()
        {
            try
            {
                string hmacStr = HmacSha1Sign(signStr(), secret_key);
                string base64Str = EncodeBase64(hmacStr);
                return base64Str;
            }
            catch (System.Exception ex)
            {
                return "";
            }
            
        }

protected void Button1_Click(object sender, EventArgs e)
        {

            System.Net.WebClient webClient = new System.Net.WebClient();
            System.Collections.Specialized.NameValueCollection PostVars = new System.Collections.Specialized.NameValueCollection();
            PostVars.Add("appid", "1234567890");//appid
            PostVars.Add("idcard_number", "666666666666666666");//身份证号
            PostVars.Add("idcard_name", "老王");//姓名
            PostVars.Add("url", "http://www.xxxxxxxx.com/id1.jpg");//身份证图片
            PostVars.Add("session_id", "123456789000");

            webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
            webClient.Headers.Add("Authorization", EntrySign());
            try
            {
                byte[] byRemoteInfo = webClient.UploadValues("http://service.image.myqcloud.com/face/idcardcompare", "POST", PostVars);
                //下面都没用啦,就上面一句话就可以了
                string sRemoteInfo = System.Text.Encoding.Default.GetString(byRemoteInfo);
                //这是获取返回信息
                TextBox1.Text += sRemoteInfo;
            }
            catch (System.Exception ex)
            {
                Response.Write(ex.ToString());
            }

        }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册
您需要登录后才可以发帖 QQ登录

联系我们|腾讯云平台|积分商城|腾讯云官方论坛    

GMT+8, 2018-4-22 07:04 , Processed in 1.464392 second(s), 28 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部