System.Net.Http.HttpClient не может подключиться к веб-API через клиент NSwag (универсальная платформа Windows) - PullRequest
0 голосов
/ 28 октября 2019

Я написал простой .Net Core 3.0 API с использованием Swashbuckle Swagger и сгенерировал API-клиент с помощью NSwag Studio, а затем поместил сгенерированный Api-клиент в проект .Net Standard 2.0. У меня есть приложение универсальной платформы Windows, которое предназначено для подключения к Web Api и отправки / получения данных и т. Д.

Я поместил простой код в класс MainPage.xaml.cs с System.Net.Http.HttpClient внутри

public MainPage()
    {
        this.InitializeComponent();
        var httpClient = new HttpClient();
        var apiClient = new ApiClient(ProjectConstants.API_URL, httpClient);
        var deviceService = new DeviceService(apiClient);
    }

Когда API вызывается позже в deviceService, моя программа генерирует исключение для метода SendAsync в сгенерированном клиенте Api

"Произошла ошибка при отправке запроса."

var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);

Я тестировал API-клиент и HttpClient в консольном приложении .Net Core, и он работал нормально. Я читал о Http Client для UWP https://docs.microsoft.com/en-us/windows/uwp/networking/httpclient, но кажется, что UWP также должен поддерживать System.Net.Http.HttpClient, что я хотел бы придерживаться. Это ошибка универсальной платформы Windows или я забыл добавить что-то необходимое в проект?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2019

Имеет ли он те же API, что и портативный HttpClient?

0 голосов
/ 28 октября 2019

API System.Net.Http.HttpClient можно использовать на разных платформах, но мы рекомендуем использовать API-интерфейсы из Windows.Web.Http.HttpClient NameSpace, которые просты в использовании. Таким образом, вы можете использовать Windows.Web.Http.HttpClient API в UWP и GetAsync (PostAsync) для отправки запроса, например:

Uri requestUri = new Uri("http://www.contoso.com");
Windows.Web.Http.HttpClient httpClient = new Windows.Web.Http.HttpClient();
Windows.Web.Http.HttpResponseMessage httpResponse = new Windows.Web.Http.HttpResponseMessage();
httpResponse = await httpClient.GetAsync(requestUri);

Для получения дополнительной информации о различиях между Windows.Web.Httpи System.Net.Http.HttpClient, вы можете обратиться к этой статье

...