|
|
@@ -1,5 +1,6 @@
|
|
|
using Aspose.Words;
|
|
|
using OASystem.API.OAMethodLib.File;
|
|
|
+using System.Net;
|
|
|
using System.Net.Http.Headers;
|
|
|
using System.Text;
|
|
|
|
|
|
@@ -11,6 +12,17 @@ namespace OASystem.API.OAMethodLib.DoubaoAPI
|
|
|
private readonly DoubaoSetting _doubaoSetting;
|
|
|
private readonly ILogger<DoubaoService> _logger;
|
|
|
|
|
|
+ private HttpClient CreateDoubaoClient()
|
|
|
+ {
|
|
|
+ // 强制指定 TLS 1.2(进程级设置)
|
|
|
+ ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
|
|
|
+
|
|
|
+ var httpClient = _httpClientFactory.CreateClient("Doubao");
|
|
|
+ httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _doubaoSetting.ApiKey);
|
|
|
+ httpClient.Timeout = TimeSpan.FromMinutes(10);
|
|
|
+ return httpClient;
|
|
|
+ }
|
|
|
+
|
|
|
public DoubaoService(IHttpClientFactory httpClientFactory, DoubaoSetting doubaoSetting, ILogger<DoubaoService> logger)
|
|
|
{
|
|
|
_httpClientFactory = httpClientFactory;
|
|
|
@@ -38,9 +50,7 @@ namespace OASystem.API.OAMethodLib.DoubaoAPI
|
|
|
}
|
|
|
|
|
|
options ??= new CompleteChatOptions();
|
|
|
- var httpClient = _httpClientFactory.CreateClient("Doubao");
|
|
|
- httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _doubaoSetting.ApiKey);
|
|
|
- httpClient.Timeout = TimeSpan.FromMinutes(10);
|
|
|
+ var httpClient = CreateDoubaoClient();
|
|
|
|
|
|
var body = new Dictionary<string, object>
|
|
|
{
|
|
|
@@ -90,9 +100,7 @@ namespace OASystem.API.OAMethodLib.DoubaoAPI
|
|
|
}
|
|
|
|
|
|
options ??= new CompleteMultimodalChatOptions();
|
|
|
- var httpClient = _httpClientFactory.CreateClient("Doubao");
|
|
|
- httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _doubaoSetting.ApiKey);
|
|
|
- httpClient.Timeout = TimeSpan.FromMinutes(10); // 超时控制
|
|
|
+ var httpClient = CreateDoubaoClient();
|
|
|
|
|
|
// 2. 构建请求体(核心:修正type值)
|
|
|
var requestBody = new
|
|
|
@@ -208,8 +216,7 @@ namespace OASystem.API.OAMethodLib.DoubaoAPI
|
|
|
|
|
|
public async Task<DoubaoFileResponse> UploadFileAsync(Stream fileStream, string fileName, string purpose = "user_data")
|
|
|
{
|
|
|
- var httpClient = _httpClientFactory.CreateClient("Doubao");
|
|
|
- httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _doubaoSetting.ApiKey);
|
|
|
+ var httpClient = CreateDoubaoClient();
|
|
|
|
|
|
using var content = new MultipartFormDataContent();
|
|
|
|
|
|
@@ -236,8 +243,7 @@ namespace OASystem.API.OAMethodLib.DoubaoAPI
|
|
|
|
|
|
public async Task<DoubaoFileListResponse> ListFilesAsync()
|
|
|
{
|
|
|
- var httpClient = _httpClientFactory.CreateClient("Doubao");
|
|
|
- httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _doubaoSetting.ApiKey);
|
|
|
+ var httpClient = CreateDoubaoClient();
|
|
|
|
|
|
var response = await httpClient.GetAsync("files");
|
|
|
response.EnsureSuccessStatusCode();
|
|
|
@@ -248,8 +254,7 @@ namespace OASystem.API.OAMethodLib.DoubaoAPI
|
|
|
|
|
|
public async Task<bool> DeleteFileAsync(string fileId)
|
|
|
{
|
|
|
- var httpClient = _httpClientFactory.CreateClient("Doubao");
|
|
|
- httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _doubaoSetting.ApiKey);
|
|
|
+ var httpClient = CreateDoubaoClient();
|
|
|
|
|
|
var response = await httpClient.DeleteAsync($"files/{fileId}");
|
|
|
return response.IsSuccessStatusCode;
|