- Offizieller Beitrag
Code: Ansprechen der API
public const string ConnectServiceUrl = "https://connectapi.feuersoftware.com";
public static async Task<List<ConnectVehicle>> ConnectGetVehicle(string AccessToken)
{
try
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(ConnectServiceUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "/interfaces/public/vehicle");
request.Headers.Authorization = new AuthenticationHeaderValue("bearer", AccessToken);
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var returnwert = await response.Content.ReadAsStringAsync();
var vahiclelist = JsonConvert.DeserializeObject<List<ConnectVehicle>>(returnwert);
Logger.Debug($"Statuscode ConnectGetVehicle: {response.StatusCode}");
return vahiclelist;
}
}
catch (Exception ex)
{
Logger.Error($"Fehler beim auslesen der ConnectFahrzeuge => {ex.Message}");
return null;
}
}
public static async Task<ConnectVehicleStatusModel> ConnectGetVehicleStatus(string AccessToken, string VehicleId)
{
try
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(ConnectServiceUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, $"/interfaces/public/vehicle/{VehicleId}/status");
request.Headers.Authorization = new AuthenticationHeaderValue("bearer", AccessToken);
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var returnwert = await response.Content.ReadAsStringAsync();
var vehiclestatus = JsonConvert.DeserializeObject<ConnectVehicleStatusModel>(returnwert);
Logger.Debug($"Statuscode ConnectGetVehicleStatus: {response.StatusCode}");
return vehiclestatus;
}
}
catch (Exception ex)
{
Logger.Error($"Vehicle {VehicleId} dont have any Status or Error while Download Information.");
return new ConnectVehicleStatusModel();
}
}
public static async Task<HttpResponseMessage> ConnectPostVehicleStatus(string AccessToken, string VehicleId, ConnectVehicleStatusModel model)
{
try
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(ConnectServiceUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, $"/interfaces/public/vehicle/{VehicleId}/status");
string ModeluploadString = JsonConvert.SerializeObject(model);
request.Content = new StringContent(ModeluploadString, Encoding.UTF8, "application/json");
request.Headers.Authorization = new AuthenticationHeaderValue("bearer", AccessToken);
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var returnwert = await response.Content.ReadAsStringAsync();
Logger.Debug($"Statuscode ConnectPostVehicleStatus: {response.StatusCode}");
return response;
}
}
catch (Exception ex)
{
Logger.Error($"Error while ConnectPostVehicleStatus => {ex.Message}");
return null;
}
}
Alles anzeigen
Code: ConnectVehicle
public class ConnectVehicle
{
public int Id { get; set; }
public string RadioId { get; set; }
public string PlaceName { get; set; }
public string OrganizationCallSign { get; set; }
public int? LocationIdentificationNumber { get; set; }
public string VehicleIdentifier { get; set; }
public int? Subdivision { get; set; }
public string Description { get; set; }
public int Crew { get; set; }
public string Phone { get; set; }
public Site Site { get; set; }
public string CallSign { get; set; }
}
public class Site
{
public int Id { get; set; }
public string Name { get; set; }
}
Alles anzeigen
Code: ConnectVehicleStatusModel
public class ConnectVehicleStatusModel
{
public int? Status { get; set; }
public Position Position { get; set; }
public DateTime? StatusTimestamp { get; set; }
public DateTime? PositionTimestamp { get; set; }
}
public class Position
{
public int? Latitude { get; set; }
public int? Longitude { get; set; }
}
Alles anzeigen
Da wir nur sichere TLS Versionen nutzen müsst ihr noch folgenden Befehl bei jedem Start ausführen
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;