использующий API httpClient - PullRequest
0 голосов
/ 04 апреля 2020

Я получаю сообщение об ошибке "Bad Request" при попытке использовать API. Я пробовал несколько разных способов, но безуспешно. Может ли кто-нибудь помочь?

Параметры API должны быть:

Параметры FormData

  1. scope = "oob"
  2. grant_type = "client_credentials"

Параметры заголовка

  1. Content-type = "application / x- www-form-urlencoded"
  2. Authorization = "Basi c 2xpZW50LTAxOnNlY3JldC1rZXktMDI = "(пример Base64)

[POST]

curl -X POST \ https://api-sandbox.getnet.com.br/auth/oauth/v2/token \ -H 'authorization: Basi c 2xpZW50LTAxOnNlY3JldC1rZXktMDI =' \ -H 'тип содержимого: application / x- www-form-urlencoded' \ -d 'scope = oob & grant_type = client_credentials'

    string content_type = "application/x-www-form-urlencoded";
    string scope = "oob";
    string grant_type = "client_credentials";
    string authorization = "Basic 2xpZW50LTAxOnNlY3JldC1rZXktMDI="

    using (var httpClient = new HttpClient())
    {
         var requestMessage = new HttpRequestMessage()
         {
              Method = new HttpMethod("POST"),
              RequestUri = new Uri("https://api-sandbox.getnet.com.br/auth/oauth/v2/token"),
              Content = new StringContent(
                            @"{""scope"":""oob"",""grant_type"":client_credentials}", Encoding.UTF8, content_type)};

          requestMessage.Content.Headers.ContentType = 
                new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded");

          requestMessage.Headers.Add("Authorization", authorization);

          var response = await httpClient.SendAsync(requestMessage);
          var responseStatusCode = response.StatusCode;
          var responseBody = await response.Content.ReadAsStringAsync();
    }

1 Ответ

2 голосов
/ 04 апреля 2020

Вы можете попробовать следующие фрагменты кода

  string content_type = "application/x-www-form-urlencoded";
  string scope = "oob";
  string grant_type = "client_credentials";
  string authorization = "Basic 2xpZW50LTAxOnNlY3JldC1rZXktMDI=";

  using (var httpClient = new HttpClient())
  {
    var parameters = new List<KeyValuePair<string, string>>() {
      new KeyValuePair<string, string>("scope", "oob"),
      new KeyValuePair<string, string>("grant_type", "client_credentials")
    };

    var requestMessage = new HttpRequestMessage()
    {
      Method = new HttpMethod("POST"),
      RequestUri = new Uri("https://api-sandbox.getnet.com.br/auth/oauth/v2/token"),
      Content = new FormUrlEncodedContent(parameters)
    };

    requestMessage.Content.Headers.ContentType =
          new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded");

    requestMessage.Headers.Add("Authorization", authorization);

    var response = await httpClient.SendAsync(requestMessage);
    var responseStatusCode = response.StatusCode;
    var responseBody = await response.Content.ReadAsStringAsync();
  }
...