Olá @Bellaver!
Seja bem vindo a nossa comunidade!
Primeiramente, sugiro que você dê uma olhada neste tópico, caso ainda não tenha feito, para entender como a linguagem C# é usada no Latromi
Sobre a autenticação OAuth 2, você encontra um exemplo completo neste link.
Ao final do código apresentado no tópico acima, ao invés de atribuir o token à um campo “access_token”, coloque em uma variável de mesmo nome.
No código C# abaixo, mostro como fazer uma requisição POST , enviando a estrutura de dados que você forneceu como exemplo, buscando informações do banco de dados e salvando o resultado:
using System;
using System.IO;
using System.Reflection;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json;
using System.Text;
using LATROMI.Extensions;
// Captura o token armazenado na variável chamada "access_token", do tipo "Text"
var token = (string)Variables["access_token"].Value;
// Captura o Data Inicial e Final armazenadas nos campos "dtpDtInicio" e "dtpDtFim" do tipo "DateTimePicker";
var dtInicio = (DateTime)Fields["dtpDtInicio"].Value;
var dtFim = (DateTime)Fields["dtpDtFim"].Value;
// List de tupla nomeada
var list = new List<(
int Id,
string Documento,
string NF,
string Serie,
DateTime DataChegadaCliente,
DateTime DataSaidaCliente,
string ImagemBase64Canhoto,
DateTime DataEntregaEfetiva,
string Situacao
)>();
// Abre uma conexão com o banco de dados "Nome_da_Conexao" (Troque pelo nome da conexão cadastrada)
using(var connection = Database.CreateConnection("Nome_da_Conexao"))
{
// Busca os dados de todos os registros que serão enviados
var cmd = connection.CreateCommand();
cmd.CommandText =
@"SELECT
Id
, Documento
, NF
, Serie
, DataChegadaCliente
, DataSaidaCliente
, ImagemBase64Canhoto
, DataEntregaEfetiva
, Situacao
FROM tabela
WHERE data BETWEEN @dt_inicio AND @dt_fim";
// Adiciona valor dos parâmetros
cmd.AddParameter("@dt_inicio", dtInicio);
cmd.AddParameter("@dt_fim", dtFim);
// Abre a conexão antes de iniciar a leitura
connection.Open();
// Faz a leitura de cada linha retornada no SELECT, e adiciona na variável "list"
using(var reader = cmd.ExecuteReader())
{
while(reader.Read())
{
list.Add((
(int)reader["Id"],
(string)reader["Documento"],
(string)reader["NF"],
(string)reader["Serie"],
(DateTime)reader["DataChegadaCliente"],
(DateTime)reader["DataSaidaCliente"],
Convert.IsDBNull(reader["ImagemBase64Canhoto"]) ? null: (string)reader["ImagemBase64Canhoto"],
(DateTime)reader["DataEntregaEfetiva"],
(string)reader["Situacao"]
));
}
}
// Declara HttpClient para fazer o envio para a WebAPI
using (HttpClient client = new HttpClient())
{
// Adiciona cabeçaho HTTP com o token do tipo "Bearer"
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
// Percorre os itens da lista, e faz o envio de cada um deles
foreach(var item in list)
{
// Conteudo do corpo da requisição
var requestContent = new StringContent(JsonConvert.SerializeObject(item), Encoding.UTF8, "application/json");
// Faz a solicitação POST para o endpoint
var response = client.PostAsync("https://homologacao.teste.com.br/teste.webapi/api/confirmarentrega", requestContent).Result;
// Faz a leitura do resultado da requisição
var resultJson = response.Content.ReadAsStringAsync().Result;
// Varifica se a solicitação foi bem-sucedida
int statusCode = (int)response.StatusCode;
// Grava o resultado no banco de dados
cmd.Parameters.Clear();
cmd.CommandText = @"UPDATE tabela
SET ResponseData = @Result
, ResponseStatusCode = @StatusCode
WHERE id = @id";
cmd.AddParameter("@id", item.Id);
cmd.AddParameter("@Result", resultJson);
cmd.AddParameter("@StatusCode", statusCode);
cmd.ExecuteNonQuery();
}
}
}