У меня есть 2 приложения, оба с аутентификацией Windows включены и будут на одном сервере. Один - клиентское приложение (сделано в .net 4.0), а другой - API (сделано в .net core 2.0).Мне нужно вызывать Api из клиентского приложения со стороны сервера (не может сделать из ajax из-за некоторых неизбежных ограничений от дизайна API).
Для этого я использую HttpClient (System.Net.Http v2.0) , код такой:
public static IEnumerable<TResponse> InvokeGetWithQueryParam<TResponse>(string apiBaseUrl, string getRelativeUrl, Dictionary<string, string> queryParamList)
{
var url = GetUriBuilderInstance(apiBaseUrl, getRelativeUrl, queryParamList);
var httpClientHandler = new HttpClientHandler() { UseDefaultCredentials = true };
HttpClient client = new HttpClient(httpClientHandler);
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
List<TResponse> responseObj = null;
try
{
//this gives 3 codes 401 twice and 200 at last, i only want next if to execute/process response and give data back when only for 200
var response = **client.GetAsync**(url, HttpCompletionOption.ResponseHeadersRead).Result;
if (response.IsSuccessStatusCode)
{
responseObj = response.Content.ReadAsAsync<List<TResponse>>().Result;
}
}
catch (Exception exp)
{
//do logging later
throw;
}
return responseObj;
}
Когда я его запускаю, я получаю 3 различных кода ошибки в скрипаче , как можно увидеть здесь.
Мой вопрос
Как я могу гарантировать, что этот метод возвращает данные только тогда, когда код ответа равен 200?
Любая идея будет полезна.
Примечание: Я не могу использовать async await в любом случае, так как это не .net 4.5, поэтому, пожалуйста, избегайте предложений относительно версий .net 4.5 или более.