Запрос HttpClient GET - PullRequest
       58

Запрос HttpClient GET

0 голосов
/ 06 августа 2020

Если я хочу выполнить запрос GET для API, который я хочу использовать: https://mymarketnews.ams.usda.gov/mars-api/authentication как мне включить часть аутентификации, чтобы использовать мой ключ для запроса?

I Я новичок в этом, поэтому я читал документацию по HTTP-клиенту (http://zetcode.com/csharp/httpclient/) и нашел то, что я думаю, это то, для чего я снимаю (C# HttpClient JSON запрос):

using System;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json;

namespace HttpClientJson
{
    class Contributor
    {
        public string Login { get; set; }
        public short Contributions { get; set; }

        public override string ToString()
        {
            return $"{Login,20}: {Contributions} contributions";
        }
    }

    class Program
    {
        private static async Task Main()
        {
            using var client = new HttpClient();

            client.BaseAddress = new Uri("https://api.github.com");
            client.DefaultRequestHeaders.Add("User-Agent", "C# console program");
            client.DefaultRequestHeaders.Accept.Add(
                    new MediaTypeWithQualityHeaderValue("application/json"));

            var url = "repos/symfony/symfony/contributors";
            HttpResponseMessage response = await client.GetAsync(url);
            response.EnsureSuccessStatusCode();
            var resp = await response.Content.ReadAsStringAsync();

            List<Contributor> contributors = JsonConvert.DeserializeObject<List<Contributor>>(resp);
            contributors.ForEach(Console.WriteLine);
        }
    }
} 

Итак, мой точный вопрос в основном таков: в этом типе запроса JSON GET, если бы я хотел использовать это для своего случая, это было бы:

client.BaseAddress = new Uri("https://mymarketnews.ams.usda.gov");
var url = "https://marsapi.ams.usda.gov/services/v1.1/reports -H "Basic<Base64EncodedApiKey:>"";

где URL обрабатывает аутентификация на предъявителя? Или это был бы участник класса, я не уверен, что мне понадобится этот класс в моем случае.

1 Ответ

0 голосов
/ 06 августа 2020

Вы хотели бы установить заголовок авторизации вашего HttpClient. Итак, используя ваш пример, вы можете добавить в настройки своего клиента следующее:

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "Your Base64 Encoded API key");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...