Как правильно отправить запрос методом GetTechAnalysis к API Tinkoff.InvestApi с использованием gPRC?

Чтобы улучшить ваш вопрос, предлагаю следующую переформулировку:

«Здравствуйте. У меня возникла ошибка при попытке отправить запрос к методу GetTechAnalysis. Вот фрагмент кода, который вызывает проблему:

```c#
From = Timestamp.FromDateTimeOffset(new DateTime(2023,12,31)),
To = Timestamp.FromDateTime(DateTime.Now),
```

Ошибка, которую я получаю:

```
Unhandled exception. System.ArgumentException: Conversion from DateTime to Timestamp
requires the DateTime kind to be Utc (Parameter 'dateTime') at
Google.Protobuf.WellKnownTypes.Timestamp.FromDateTime(DateTime dateTime) at
Program.Main(String[] args) in C:\C#_DEV\Test\TinkofTest\Program.cs:line 14
```

Как мне исправить проблему с преобразованием даты в Timestamp? Я не могу понять, в чем именно проблема.»
  • 6 апреля 2024 г. 16:39
Ответы на вопрос 2
Для отправки запроса методом GetTechAnalysis к API Tinkoff.InvestApi с использованием gRPC, вы можете использовать следующий пример кода:

```c#
using Grpc.Net.Client;
using System;

namespace YourNamespace
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var channel = GrpcChannel.ForAddress("https://api-invest.tinkoff.ru/openapi/grpc");
            var client = new TechnicalAnalysisService.TechnicalAnalysisServiceClient(channel);

            var request = new GetTechAnalysisRequest
            {
                From = Timestamp.FromDateTimeOffset(new DateTimeOffset(new DateTime(2023, 12, 31))),
                To = Timestamp.FromDateTime(DateTime.UtcNow)
            };

            var response = await client.GetTechAnalysisAsync(request);

            Console.WriteLine(response);
        }
    }
}
```

Этот код использует gRPC клиент для установления соединения с API Tinkoff.InvestApi и отправки запроса методом GetTechAnalysis. Учитывайте, что в данном примере предполагается, что у вас уже есть сгенерированные gRPC файлы для работы с API Tinkoff.InvestApi. 

Что касается вашей ошибки с преобразованием даты в Timestamp, предоставленная вами ошибка связана с тем, что метод FromDateTime требует, чтобы DateTime был в формате UTC. Попробуйте использовать метод DateTime.UtcNow для получения текущей даты и времени в формате UTC. Надеюсь, это поможет вам исправить проблему с преобразованием даты.
Вроде же чёрным по белому написно: 

Conversion from DateTime to Timestamp requires the DateTime kind to be Utc (Parameter 'dateTime')


Timestamp.FromDateTime(DateTime.Now)
Вот тут надо UtcNow

Timestamp.FromDateTimeOffset(new DateTime(2023,12,31)),

и вот тут явно указать kind
Похожие вопросы