|
|
|
|
@ -72,8 +72,10 @@ namespace Video.DomainService |
|
|
|
|
req.Headers.TryAddWithoutValidation("Authorization", token); |
|
|
|
|
|
|
|
|
|
using var resp = await _http.SendAsync(req); |
|
|
|
|
var body = await resp.Content.ReadAsStringAsync(); |
|
|
|
|
|
|
|
|
|
resp.EnsureSuccessStatusCode(); |
|
|
|
|
await using var stream = await resp.Content.ReadAsStreamAsync(); |
|
|
|
|
using var reader = new StreamReader(stream); |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("录像请求 HTTP 失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
@ -134,7 +136,11 @@ namespace Video.DomainService |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
using var resp = await _http.SendAsync(req); // 关键:用 SendAsync 发送 req,才能带上头 |
|
|
|
|
var body = await resp.Content.ReadAsStringAsync(); |
|
|
|
|
resp.EnsureSuccessStatusCode(); |
|
|
|
|
|
|
|
|
|
await using var stream = await resp.Content.ReadAsStreamAsync(); |
|
|
|
|
using var reader = new StreamReader(stream); |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
|
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
@ -192,7 +198,11 @@ namespace Video.DomainService |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
using var resp = await _http.SendAsync(req); // 关键:用 SendAsync 发送 req |
|
|
|
|
var body = await resp.Content.ReadAsStringAsync(); |
|
|
|
|
resp.EnsureSuccessStatusCode(); |
|
|
|
|
|
|
|
|
|
await using var stream = await resp.Content.ReadAsStreamAsync(); |
|
|
|
|
using var reader = new StreamReader(stream); |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
|
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
@ -257,8 +267,11 @@ namespace Video.DomainService |
|
|
|
|
req.Headers.TryAddWithoutValidation("Authorization", token); |
|
|
|
|
|
|
|
|
|
using var resp = await _http.SendAsync(req); |
|
|
|
|
var body = await resp.Content.ReadAsStringAsync(); |
|
|
|
|
resp.EnsureSuccessStatusCode(); |
|
|
|
|
|
|
|
|
|
await using var stream = await resp.Content.ReadAsStreamAsync(); |
|
|
|
|
using var reader = new StreamReader(stream); |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("实时流请求 HTTP 失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
@ -298,41 +311,57 @@ namespace Video.DomainService |
|
|
|
|
{ |
|
|
|
|
var url = $"https://{_configuration["DahuaAuth:Host"]}/evo-apigw/evo-oauth/1.0.0/oauth/logout"; |
|
|
|
|
|
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
using var req = new HttpRequestMessage(HttpMethod.Get, url); |
|
|
|
|
req.Headers.TryAddWithoutValidation("Authorization", authorization); |
|
|
|
|
if (!string.IsNullOrWhiteSpace(openId)) |
|
|
|
|
{ |
|
|
|
|
req.Headers.Add("openId", openId); |
|
|
|
|
} |
|
|
|
|
if (userClient != null) |
|
|
|
|
{ |
|
|
|
|
req.Headers.Add("User-Client", userClient.ToString()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
using var resp = await _http.SendAsync(req); |
|
|
|
|
resp.EnsureSuccessStatusCode(); |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
using var resp = await _http.SendAsync(req, HttpCompletionOption.ResponseHeadersRead); |
|
|
|
|
var body = await resp.Content.ReadAsStringAsync(); |
|
|
|
|
|
|
|
|
|
var result = await resp.Content.ReadFromJsonAsync<DaHApiResult<object>>(); |
|
|
|
|
// 不抛异常,让业务逻辑决定是否失败 |
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("注销登录 HTTP失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
return new DaHApiResult<object> |
|
|
|
|
{ |
|
|
|
|
Success = false, |
|
|
|
|
Code = ((int)resp.StatusCode).ToString(), |
|
|
|
|
Msg = $"HTTP错误 {(int)resp.StatusCode}", |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 尝试反序列化 |
|
|
|
|
var result = JsonSerializer.Deserialize<DaHApiResult<object>>(body); |
|
|
|
|
if (result == null) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("注销登录反序列化失败: {Body}", body); |
|
|
|
|
return new DaHApiResult<object> { Success = false, Code = "1011", Msg = "注销登录返回无效" }; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (result != null && (result.Success || result.Code != "0")) |
|
|
|
|
// 只有 Success==false 或 Code != "0" 才视为失败 |
|
|
|
|
if (!result.Success || result.Code != "0") |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("注销登录失败: {Body}", body); |
|
|
|
|
result.Success = false; |
|
|
|
|
result.Code = "1011"; |
|
|
|
|
result.Msg = "注销登录失败"; |
|
|
|
|
_logger.LogWarning("注销登录失败,返回结果:{Result}", result); |
|
|
|
|
result.Code = result.Code ?? "1011"; |
|
|
|
|
result.Msg ??= "注销登录失败"; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
catch (Exception ex) |
|
|
|
|
{ |
|
|
|
|
_logger.LogError(ex, "大华注销登录出错"); |
|
|
|
|
_logger.LogError(ex, "大华注销登录异常"); |
|
|
|
|
return new DaHApiResult<object> |
|
|
|
|
{ |
|
|
|
|
Success = false, |
|
|
|
|
Code = "1011", |
|
|
|
|
Msg = "注销登录失败" |
|
|
|
|
Msg = $"注销登录异常:{ex.Message}" |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -387,7 +416,11 @@ namespace Video.DomainService |
|
|
|
|
reqs.Headers.TryAddWithoutValidation("Authorization", token); |
|
|
|
|
|
|
|
|
|
using var resp = await _http.SendAsync(reqs); |
|
|
|
|
var bodys = await resp.Content.ReadAsStringAsync(); |
|
|
|
|
resp.EnsureSuccessStatusCode(); |
|
|
|
|
|
|
|
|
|
await using var stream = await resp.Content.ReadAsStreamAsync(); |
|
|
|
|
using var reader = new StreamReader(stream); |
|
|
|
|
var bodys = await reader.ReadToEndAsync(); |
|
|
|
|
var resultRecord = JsonSerializer.Deserialize<DaHApiResult<RecordDataResDto>>(bodys); |
|
|
|
|
if (resultRecord == null || !resultRecord.Success) |
|
|
|
|
{ |
|
|
|
|
@ -482,8 +515,11 @@ namespace Video.DomainService |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
using var resp = await _http.SendAsync(req); // 关键:用 SendAsync 发 req |
|
|
|
|
var body = await resp.Content.ReadAsStringAsync(); |
|
|
|
|
resp.EnsureSuccessStatusCode(); |
|
|
|
|
|
|
|
|
|
await using var stream = await resp.Content.ReadAsStreamAsync(); |
|
|
|
|
using var reader = new StreamReader(stream); |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("实时流请求 HTTP 失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
@ -567,8 +603,11 @@ namespace Video.DomainService |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
using var resp = await _http.SendAsync(req); |
|
|
|
|
var body = await resp.Content.ReadAsStringAsync(); |
|
|
|
|
resp.EnsureSuccessStatusCode(); |
|
|
|
|
|
|
|
|
|
await using var stream = await resp.Content.ReadAsStreamAsync(); |
|
|
|
|
using var reader = new StreamReader(stream); |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("抓拍 失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
@ -630,8 +669,11 @@ namespace Video.DomainService |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
using var resp = await _http.SendAsync(req); |
|
|
|
|
var body = await resp.Content.ReadAsStringAsync(); |
|
|
|
|
resp.EnsureSuccessStatusCode(); |
|
|
|
|
|
|
|
|
|
await using var stream = await resp.Content.ReadAsStreamAsync(); |
|
|
|
|
using var reader = new StreamReader(stream); |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("控制云台镜头失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
@ -690,8 +732,11 @@ namespace Video.DomainService |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
using var resp = await _http.SendAsync(req); |
|
|
|
|
var body = await resp.Content.ReadAsStringAsync(); |
|
|
|
|
resp.EnsureSuccessStatusCode(); |
|
|
|
|
|
|
|
|
|
await using var stream = await resp.Content.ReadAsStreamAsync(); |
|
|
|
|
using var reader = new StreamReader(stream); |
|
|
|
|
var body = await reader.ReadToEndAsync(); |
|
|
|
|
if (!resp.IsSuccessStatusCode) |
|
|
|
|
{ |
|
|
|
|
_logger.LogWarning("云台方向控制失败: {Status}, Body: {Body}", (int)resp.StatusCode, body); |
|
|
|
|
|