@dlysenko1311

Как скачать джейсон по апи и сохранить его в файл?

Я новичок в С#, до этого я писал на питоне, сейчас возникла необходимость написать запрос get запрос и скачать файл:
Вот как я это делал на питоне:
import requests as r


# я изменил значение переменных: url_dimensions  url_metrics  url_headers 
url_dimensions = 'ym:i:apfa', 'y:i:publfsafsd','y:i:camfasfsn', 'ym:i:dafs','ym:i:regifsdafanCofsy','ym:i:rfsadionAfsaa'
url_metrics = 'ym:i:infsdtallDe'
url_headers = {"Authorization": "OAuth fjsfnlkdsknsadfsafsadfsalknlkndsaffsdknsfksdnsd"}
url_param = dict(
        date1 = '2022-12-01',
        date2 = '2022-12-10',
        dimensions = url_dimensions,
        metrics = url_metrics,
        lang = 'ru',
        ids = '26325321',
        accuracy = 1,
        limit = 100000
    )

url = 'https://api.appmetrica.yandex.ru/test/test/test'
    
# отправляем запрос апи
r = rq.get(url, headers=url_headers, params=url_param)

#сохраняем результат
with open("file.json", "a") as f
    f.write(r.content)


Вот что я написал на C#.
using System;
using System.Net;
using System.Net.Http;
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Making API Call...");
            using (var client = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }))
            {
                client.BaseAddress = new Uri("https://api.appmetrica.yandex.ru/test/test/test");
                HttpResponseMessage response = client.GetAsync("'https://api.appmetrica.yandex.ru/test/test/test'").Result;
                response.EnsureSuccessStatusCode();
                string result = response.Content.ReadAsStringAsync().Result;
                Console.WriteLine("Result: " + result);
            }
            Console.ReadLine();
        }
    }
}


Ничего не выходит. Как можно написать запрос к апи на C#. Как я понял сначло нужно создать HTTP клиента. А потом делать запрос, но я не понимаю куда передавать заголовки и параметры в запрос

Прошу обьяснить: как написать get запрос c заголовком и параметрами к апи используя C#
  • Вопрос задан
  • 91 просмотр
Решения вопроса 2
freeExec
@freeExec
Участник OpenStreetMap
Ответ "Ничего не выходит", это ответ бухгалтерши, а не разработчика.
У микрософт документация худо-бедно но можно читать даже на русском. И там прям сразу брасается в глаза, что есть отдельные методы для GET, PUT, POST и даже DELETE HTTP запросов.
Есть и универсальный метод Send, где аргументом идёт как раз объект, куда можно напихать параметры, заголовки и все остальные причуды.
Ответ написан
1. Если вызываешь асинхронные методы, то пиши await, а не .Result
2. Если ты и так посылаешь GET на полный адрес, то BaseAddress тебе не нужен.
3. Заголовки можно передать вместе с HttpRequestMessage (тогда надо использовать метод Send)
4. Параметры передаются как часть URI. Чтобы чуть удобнее было их конструировать - можешь взять библиотеку flurl
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы