Как я могу определить, в чем проблема с запросом, который возвращает badrequest? - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь создать метод в 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, и все работает как надо.

...