有人可以帮我解决这个错误吗?(Xamarin.Forms)“System.Net.Http.HttpRequestException:'网络子系统已关闭'”
Posted
技术标签:
【中文标题】有人可以帮我解决这个错误吗?(Xamarin.Forms)“System.Net.Http.HttpRequestException:\'网络子系统已关闭\'”【英文标题】: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吗? 我不知道你有什么样的服务器。谷歌会帮你搞清楚 【参考方案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 断开连接,也没有来自无线运营商的数据计划? (我的开发设备没有无线套餐;我太节俭了,买不起。)网络问题可能是一个难以解决的难题。祝你好运。
【讨论】:
以上是关于有人可以帮我解决这个错误吗?(Xamarin.Forms)“System.Net.Http.HttpRequestException:'网络子系统已关闭'”的主要内容,如果未能解决你的问题,请参考以下文章