php hash_hmac到c# - webresponse“NONCE_NOT_PROVIDED”

时间:2017-11-17 02:16:09

标签: c# php

我尝试将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。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

Aren你错过了&符号(&)?

apikey={apikey}nonce={nonce}

变为

apikey={apikey}&nonce={nonce}

我建议您更仔细地阅读这些错误。