Я пытаюсь создать метод в C #, который эквивалентен последнему примеру кода, предоставленному в https://app.profitshare.ro/files/pdf/api_affiliate.pdf
var apiUser = "bogdan";
var apiKey = "111222333444555666777888999";
var phUrl = "http://api.profitshare.ro/affiliate-links/?";
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var now = DateTime.Now;
var time = now.ToString("r");
var queryString = "";
var signatureString = $"POSTaffiliate-links/?{queryString}/{apiUser}{time}";
var request = new HttpRequestMessage(HttpMethod.Post, phUrl);
request.Headers.Add("Date", time);
request.Headers.Add("X-PS-Client", $"{apiUser}");
request.Headers.Add("X-PS-Accept", "json");
request.Headers.Add("X-PS-Auth", $"{HMAC_SHA1(signatureString, apiKey)}");
request.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
request.Content = new StringContent("{'name':'APIEmag','url':'www.emag.ro'}", Encoding.UTF8, "application/json");
var response = client.SendAsync(request).Result;
//--------------------------------------------------------------------------
static string HMAC_SHA1(string signatureString, string secretKey)
{
var enc = Encoding.ASCII;
HMACSHA1 hmac = new HMACSHA1(enc.GetBytes(secretKey));
hmac.Initialize();
byte[] buffer = enc.GetBytes(signatureString);
return BitConverter.ToString(hmac.ComputeHash(buffer)).Replace("-", "").ToLower();
}
Я ожидаю, что этот код вернет JSON с URL-адресом, возвращеннымAPI, но я получаю BadRequest каждый раз.Я пробовал разные варианты useragent, но результат был тот же.
Закончилось использованием RestClient (RestSharp) вместо HttpClient, и все работает как надо.