/// <exception cref="ApiException"></exception> public static async Task ThrowIfNotSuccessedAsync(HttpResponseMessage responseMessage) { if (responseMessage.IsSuccessStatusCode) { return; } //TODO: 可以处理404等ProblemDetails的返回 ErrorCode?errorCode = await responseMessage.DeSerializeJsonAsync <ErrorCode>().ConfigureAwait(false); responseMessage.Dispose(); if (errorCode == null) { throw ApiExceptions.ServerUnkownError(response: responseMessage); } else { throw ApiExceptions.ServerReturnError(errorCode); } }
/// <exception cref="System.ApiException"></exception> public static async Task <TResponse?> SendAsync <TResource, TResponse>(this HttpClient httpClient, ApiRequest <TResource> request) where TResource : ApiResource where TResponse : class { using HttpRequestMessage requestMessage = request.ToHttpRequestMessage(); if (request is FileUpdateRequest <TResource> fileUpdateRequest) { requestMessage.Content = BuildMultipartContent(fileUpdateRequest); } using HttpResponseMessage responseMessage = await httpClient.SendCoreAsync(requestMessage, request).ConfigureAwait(false); await ThrowIfNotSuccessedAsync(responseMessage).ConfigureAwait(false); if (typeof(TResponse) == _emptyResponseType) { return((TResponse)(object)EmptyResponse.Value); } else { TResponse?response = await responseMessage.DeSerializeJsonAsync <TResponse>().ConfigureAwait(false); return(response); } }