我尝试将php代码转换为c#
PHP
$apikey='xxx';
$apisecretkey='yyy';
$nonce=time();
$uri='https://website.com/api/getsomething?apikey='.$apikey.'&nonce='.$nonce;
$sign=hash_hmac('sha512',$uri,$apisecretkey);
$resource = curl_init($uri);
curl_setopt($resource, CURLOPT_HTTPHEADER, array('apisign:'.$sign));
$execResult = curl_exec($resource);
$obj = ($execResult);
这里是我的C#
WebRequest _WebRequest;
WebResponse _WebResponse;
string apikey = "xxx";
string apisecret = "yyy";
string nonce = ((int)(DateTime.UtcNow - new DateTime(1970,1,1)).TotalSeconds).ToString();
string uri = $"https://website.com/api/getsomething?apikey={apikey}nonce={nonce}";
string _Hash_hmac = Hash_hmac(uri, apisecret);
_WebRequest = WebRequest.Create(uri);
_WebRequest.Headers["apisign"] = _Hash_hmac;
_WebResponse = _WebRequest.GetResponse();
Hash-hmac代码我使用此C# equivalent to hash_hmac in PHP
Web响应总是“NONCE_NOT_PROVIDED”
我用php中的那个检查了hash_hmac的结果 - 它们是相同的。 并尝试使用字符串ToUpper和ToLower。
我做错了什么?
答案 0 :(得分:0)
Aren你错过了&符号(&)?
apikey={apikey}nonce={nonce}
变为
apikey={apikey}&nonce={nonce}
我建议您更仔细地阅读这些错误。