【问题标题】:Could someone help me with this error?(Xamarin.Forms) "System.Net.Http.HttpRequestException: 'Network subsystem is down'"有人可以帮我解决这个错误吗?(Xamarin.Forms)“System.Net.Http.HttpRequestException:'网络子系统已关闭'”
【发布时间】:2020-06-15 01:27:56
【问题描述】:

所以我正在使用 Xamarin 制作一个 Android 和 IOS 应用程序,我试图解决我的问题,但我一直在努力解决它。我做了一个注册页面,新用户可以自己注册,但是当他们点击注册时,应用程序会切换到中断模式并发生错误。因此,正如您在代码中看到的那样,我还有一个 php 脚本,它在单击注册按钮时使用查询将新用户添加到 mysql 数据库。

这是我遇到的错误:

" System.Net.Http.HttpRequestException: '网络子系统已关闭'" (--> breakmode)

后面的代码是这样的:

 public async void SUButton_Clicked(object sender, EventArgs e)
    {


        if (string.IsNullOrWhiteSpace(UsernameEntry.Text) || string.IsNullOrWhiteSpace(AgeEntry.Text) || string.IsNullOrWhiteSpace(EmailEntry.Text) || string.IsNullOrWhiteSpace(PasswordEntry.Text) || string.IsNullOrWhiteSpace(RepeatPasswordEntry.Text))
        {
            await DisplayAlert("Enter all information", "", "Close");
        }
        else
        {
            if (PasswordEntry.Text == RepeatPasswordEntry.Text)
            {

                user u = new user();

                var _content = new FormUrlEncodedContent(new[]
                {
                   new KeyValuePair<string, string>("Id", u.Id),
                   new KeyValuePair<string, string>("Username", u.Username),
                   new KeyValuePair<string, string>("Email", u.Email),
                   new KeyValuePair<string, string>("Passwd", u.Passwd),
                   new KeyValuePair<string, string>("Age", u.Age)
                });


                var _result = await _client.PostAsync("http://localhost/DATA/USER/CreateUser.php", _content).ConfigureAwait(false);

                var _tokenJson = await _result.Content.ReadAsStringAsync();

                var _post = JsonConvert.DeserializeObject<RestApiReturn>(_tokenJson);

                var result = await DisplayAlert("Succesfull sign up", null, null, "Close");
                if (result == false)
                {
                    new MainPage();
                }
            }
            else
            {
                await DisplayAlert("The entered passwords aren't the same", "", "Close");
            }
        }
        UsernameEntry.Text = AgeEntry.Text = EmailEntry.Text = PasswordEntry.Text = RepeatPasswordEntry.Text = string.Empty;



    }

我还为 'user' 和 'RestApiReturn' 制作了两个 appart 类:

谁能帮我解决我的问题!谢谢大家!

【问题讨论】:

  • 不要使用本地主机。使用服务器的 IP 或 FQDN。
  • 这不是我的问题,但谢谢你
  • 您的问题是“有人可以帮助我吗”,我指出您对 localhost 的使用很可能导致它引发网络异常。
  • 你能告诉我在哪里可以找到我的服务器的IP吗?
  • 我不知道你有什么样的服务器。谷歌会帮你搞清楚

标签: php xamarin.forms mysql-workbench cross-platform registration


【解决方案1】:

这一行告诉你的程序联系一个 php web 应用的 POST 端点。

var _result = await _client.PostAsync("http://localhost/DATA/USER/CreateUser.php", _content).ConfigureAwait(false);

http://localhost/ 告诉您的程序联系在您的 android 设备上运行的 php web 应用程序。您的网络应用程序似乎不太可能实际在您的设备上;它可能在服务器上。因此,您需要改用http://server.example.com/,将您的服务器主机名替换为示例主机名。

localhost 是 IP 地址127.0.0.1 的主机名,它始终表示“这台机器”。它被称为环回地址。

您的错误消息表明设备的网络子系统已关闭。这可能是出于多种原因。

  • 通常在调试设备上运行的程序时,设备应通过以下方式连接 WiFi 连接到运行您的服务器的同一 LAN。检查该连接。
  • 由于某种原因,当您尝试连接到不存在的环回地址上的服务器时,您的设备可能会显示此消息。
  • 您的设备上的网络实际上可能已关闭。是飞行模式吗?它是否与 WiFi 断开连接,也没有来自无线运营商的数据计划? (我的开发设备没有无线套餐;我太节俭了,买不起。)

网络问题可能是一个难以解决的难题。祝你好运。

【讨论】:

    猜你喜欢
    • 2016-07-09
    • 1970-01-01
    • 2020-04-07
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 2011-04-26
    相关资源
    最近更新 更多