Xamarin подключается к веб-API

Я новичок в использовании Xamarin, веб-API и HttpClient.

У меня есть приложение, я пытаюсь получить сообщение из локальной веб-службы, которую я запускаю с помощью HttpClient, и отображать его как простой базовый запуск.

Вот мой код кнопки «Войти»:

    private async void Login_Clicked(object sender, EventArgs e)
    {

        var txtEmail = this.FindByName<Entry>("txtEmail");
        var txtPassword = this.FindByName<Entry>("txtPassword");

        if ( txtEmail.Text == null )
        {
            await DisplayAlert("Email", "Please enter your email address!", "OK");
            return;
        }

        if (txtPassword.Text == null)
        {
            await DisplayAlert("Password", "Please enter your password!", "OK");
            return;
        }

        using (var request = new HttpRequestMessage())
        {
            request.RequestUri = new Uri("http://82.68.3.61/api/ping");
            request.Method = HttpMethod.Get;
            request.Headers.Add("Accept", "application/json");

            using (var client = new HttpClient())
            {
                HttpResponseMessage response = await client.SendAsync(request);

                if (response.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    var json = await response.Content.ReadAsStringAsync();
                    await DisplayAlert("Success", json, "OK");
                }


            }
        }

    }

Вот мой код контроллера веб-приложения:

public class LoginController : Controller
{

    [HttpGet]
    [Route("api/ping")]
    public IActionResult Ping()
    {
        return Ok("Pong!!");
    }
}

Если я использую следующее: https: // локальный: 44309 / api / ping, я получаю сообщение Pong !! назад, но приложение ничего не делает, когда я нажимаю кнопку входа в систему, почему?

вы прошли через свой код в отладчике, чтобы проверить, что на самом деле происходит?

Jason 16.10.2018 14:57
5 способов использования оповещений, предупреждений, ошибок, сообщений об успехе в Bootstrap
5 способов использования оповещений, предупреждений, ошибок, сообщений об успехе в Bootstrap
Bootstrap - это популярный front-end фреймворк, который делает веб-разработку проще и быстрее. Использование Bootstrap растет по мере того, как все...
Библиотека Bootstrap
Библиотека Bootstrap
Bootstrap - это бесплатный набор инструментов для разработки веб-приложений с открытым исходным кодом, разработанный компанией Twitter. Написанный на...
HTML И VS CODE Для Веб-разработки
HTML И VS CODE Для Веб-разработки
Прежде чем начать кодировать html в "VS CODE", мы должны сначала создать папку и назвать ее x.html, здесь я принимаю x как имя файла, который мы...
Красиво оформленное веб-приложение для отправки HTML писем на PHP
Красиво оформленное веб-приложение для отправки HTML писем на PHP
В современный цифровой век маркетинг электронной почты играет жизненно важную роль в успехе любого бизнеса, а создание красиво оформленных HTML-писем...
Раскройте весь потенциал вашего проекта Angular с помощью экспертного знания команд Angular CLI
Раскройте весь потенциал вашего проекта Angular с помощью экспертного знания команд Angular CLI
Angular - это популярный JavaScript-фреймворк для создания веб-приложений. Одной из ключевых особенностей Angular является его мощный интерфейс...
Соскабливание и загрузка изображений Google с помощью Python
Соскабливание и загрузка изображений Google с помощью Python
Растущая распространенность веб-скрейпинга значительно расширила области его использования. Многие приложения искусственного интеллекта сегодня...
1
1
66
1

Ответы 1

Этот IP-адрес выглядит как общедоступный IP-адрес, у вас, вероятно, нет правильных правил в вашем брандмауэре / маршрутизаторе, чтобы разрешить внешний доступ.

Если ваше приложение работает в эмуляторе, вы можете использовать 10.0.2.2 вместо localhost для доступа к своей главной машине.

В противном случае, если вы работаете на устройстве в той же сети, что и ваш хост-компьютер, используйте локальный IP-адрес. Часто они находятся в диапазонах 192.168.x.x или 10.x.x.x.

Кроме того, вы не должны использовать HttpClient в операторе using, например:

using (var client = new HttpClient())

Его следует рассматривать как общий ресурс для каждого экземпляра приложения. В противном случае вы столкнетесь с утечкой TCP-сокетов, что может привести к тому, что вы не сможете делать новые запросы.

Другие вопросы по теме