如何从android模拟器访问localhost?

2024-02-02

我正在通过本教程学习 Xamarin -。如果用邮递员发送请求,一切正常。但如果我想使用 android 模拟器,它就不起作用。而且我无法使用 UWP,因为必须启用开发人员模式,而且我在公司计算机上没有管理员权限。我在我的私人计算机上启用了开发人员模式,它可以在 UWP 上运行,但不能在 Android 模拟器上运行。在教程中使用的是UWP,那家伙说对于android模拟器需要一些配置,但他没有透露任何细节。

我读了很多文章,问题似乎出在我的后端(在本地主机上运行)和 android 模拟器之间的连接。 android 模拟器是一台单独的机器试图调用我的本地主机,这是否正确?我尝试将 localhost 更改为 127.0.0.1 或 10.0.2.2,并尝试了以下所有选项本文 https://developer.android.com/studio/run/emulator-networking。但它不起作用。

我说的对吗 localhost 必须改变?如果是的话,在哪里?还是其他地方有问题?

API服务注册方法:

    public async Task<bool> RegisterAsync(string email, string password, string confirmPassword)
    {

        try
        {
            System.Diagnostics.Debug.WriteLine("Email: " + email);
            var client = new HttpClient();

            var model = new RegisterBindingModel
            {
                Email = email,
                Password = password,
                ConfirmPassword = confirmPassword
            };
            var json = JsonConvert.SerializeObject(model);

            HttpContent content = new StringContent(json);
            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            var response = await client.PostAsync("http://localhost:49205/api/Account/Register", content); 

            if (response.IsSuccessStatusCode)
            {
                return true;
            }

            return false;
        }
        catch(Exception e)
        {
            System.Diagnostics.Debug.WriteLine("Error: " + e);
            throw;
        }
   }

如果我使用本地主机,则例外:

{System.Net.Http.HttpRequestException: An error occurred while sending the request ---> System.Net.WebException: Error: ConnectFailure (Connection refused) ---> System.Net.Sockets.SocketException: Connection refused
at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x000b6] in <bcdc1df2b3724ab69797f3819a126346>:0 
at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x0016d] in <bcdc1df2b3724ab69797f3819a126346>:0 --- End of inner exception stack trace ---
at System.Net.HttpWebRequest.EndGetRequestStream (System.IAsyncResult asyncResult) [0x0003a] in <bcdc1df2b3724ab69797f3819a126346>:0 
at System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func`2[T,TResult] endFunction, System.Action`1[T] endAction, System.Threading.Tasks.Task`1[TResult] promise, System.Boolean requiresSynchronization) [0x0000f] in <fcbf47a04b2e4d90beafbae627e1fca4>:0 

如果我使用 10.0.2.2,则请求错误:

{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, 

Headers: {Server: Microsoft-HTTPAPI/2.0 Date: Thu, 17 May 2018 09:08:41 GMT Connection: close Content-Type: text/html; charset=us-ascii Content-Length: 334 }}

localhost指的是你的本地机器。人们普遍错误地认为 Android 模拟器(或 iOS)也是 Android 模拟器的一部分。localhost因为它在同一台机器上运行。但事实并非如此。

模拟器作为设备中的设备运行,并模仿物理设备的工作方式。它有自己的 IP 地址,无法访问您的localhost环回地址。您的应用程序作为另一台计算机(即 te 模拟器)上的应用程序运行。使用 UWP 时会有点混乱,因为does作为应用程序在本地计算机上运行。

这就是为什么您必须使用托管服务器应用程序的计算机的网络地址。该地址通常以192.168.x.x or 10.x.x.x并可以在您机器的网络设置中找到。

看来你已经发现了这一点。当使用10.0.2.2地址您收到 HTTP 400。这意味着您的请求中的某些内容不正确,但您可以从中得出结论,实际上可以访问服务器应用程序。但请求的内容会导致您的服务器应用程序出现问题。由于您没有提供任何代码/Account/Register端点不可能知道那里发生了什么。在服务器代码中放置一个断点,重试请求并尝试查看触发 HTTP 400 的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从android模拟器访问localhost? 的相关文章

随机推荐

  • 文本查看字幕

    我想在主屏幕上放置一个textView 并且我需要跑马灯效果 public class MainWidget extends AppWidgetProvider int a RemoteViews remoteViews AppWidget
  • 更新 MKannotation 图像而不闪烁

    我想每 5 秒更新一次地图视图上的一些注释的图像 但是我不想将它们删除并重新添加到地图中 因为这会导致它们 闪烁 或刷新 即消失然后重新出现 我希望它是无缝的 我尝试过以下方法 get the current icon UserAnnota
  • Ruby 日期格式验证

    如何验证日期 2016 01 01 的格式是否正确 Y m d 例如我想得到true or false日期格式是否正确 伪代码 if 2016 01 01 Y m d puts date is valid else puts date is
  • 如何在 UPDATE 子句中使用 ROW_NUMBER()? [复制]

    这个问题在这里已经有答案了 ROW NUMBER 仅适用于SELECT中的条款MS SQL Server 但我想用它进行更新 如下所示 Update MyTab Set MyNo 123 ROW NUMBER over Order By I
  • Z80 ASM BNF 结构...我走在正确的轨道上吗?

    我正在尝试学习 BNF 并尝试汇编一些 Z80 ASM 代码 由于我对这两个领域都是新手 我的问题是 我是否走在正确的道路上 我正在尝试将 Z80 ASM 的格式编写为 EBNF 以便我可以弄清楚从那里到哪里从源代码创建机器代码 目前我有以
  • Express - POST 和 PUT 上的 400 个错误请求

    我需要一些帮助 因为我是 Node js 和 Express 的新手 我正在 Postman 上测试以下代码 const Joi require hapi joi const bodyParser require body parser L
  • OS X - 谁能解释为什么我在安装 ipython3 后在 .pythonrc.py 文件中遇到操作系统错误,或者给我一个比这更强大的解决方案?

    我使用 pip3 安装了 ipython3 pip3 install ipython all 当我运行 python 时 我的 pythonrc py 文件遇到错误 仅在 Python 3 上 不在 Python 2 上 Python 3
  • 对每列的单行进行采样,其中存在大量缺失数据

    作为我的数据框的示例 我将其称为df1 我的 GROUP1 包含三行数据 GROUP2 包含两行数据 我有三个变量 X1 X2 和 X3 GROUP X1 X2 X3 GROUP1 A NA NA GROUP1 NA NA T GROUP1
  • 嵌套“if”-“else”语句

    我的代码非常混乱if else如果检查它正在做什么 分支和嵌套分支的数量相当大 超过 20 个 if else if 和嵌套 它使我的代码更难阅读 并且可能会消耗性能 我的应用程序检查从用户那里获得的许多条件 因此应用程序必须始终检查不同的
  • Xamarin 上的空白屏幕

    我有一个 Xamarin 便携式项目 我调试的 Xaml 页面完全是空白的 我在 Android 和 IOS 上都看不到页面上的任何组件 我怎样才能解决这个问题 Note 它没有收到任何错误消息 页面正在打开 但我看不到任何内容 问题发生在
  • Oracle.Dataaccess 位于 GAC 中。我可以控制我使用的版本吗?

    我有一个使用 Oracle DataAccess ODP NET 的 XCOPY 可部署 NET 应用程序 我们还在应用程序目录中部署 Oracle Instant 客户端 一切正常 但我担心 来自 Oracle ODP NET 常见问题解
  • 实体框架 5 - 从实体迁移和创建表

    我正在使用 Entity Framework 5 RC 并且我有一些代码需要数据库上的特定表 该实体已使用 Code First 创建 a 如果数据库中尚未创建表 是否有办法告诉 EF 创建该表 如果是的话 怎么办 b 另外 如果表已经存在
  • Intellij IDEA插件中将虚拟文件同步到物理文件

    我正在实现 Intellij IDEA 插件 该插件需要在执行操作之前保存文件 Action是shell命令 它需要将文件名作为命令行参数传递 AFAIK Idea 在框架停用时保存 同步 文件 因此如果我右键单击该文件 然后单击我的操作
  • 如何在 Ansible 中打破循环?

    想要在 item 的值变为 7 后中断任务 这里是示例任务 hosts localhost tasks shell echo item register result with sequence start 4 end 16 when it
  • 检索 Instagram 图像 - 获取访问被拒绝消息

    创建了一个应用程序来从 Twitter 休息提要中检索 Instagram 图像 正常情况下它可以工作 但偶尔会收到来自 Instagram CDN 的 访问被拒绝 消息 例如 http distilleryimage2 s3 amazon
  • Rails 3.1 活动记录插入或更新

    我是铁路新手 活动记录中是否有一种简单的方法可以向其传递数据散列 如果记录存在 则更新它 如果不存在 则创建它 data data my id 356345 data description test123 w Descriptions n
  • 是否可以在 Mono 上运行 ASP.NET MVC 3 应用程序?

    我需要在 Linux 运行服务器上运行一些 MVC 3 应用程序 似乎唯一的选择是 Mono 该网站仅讨论 Web 服务 但我想知道运行整个 MVC 3 应用程序也是可能的吗 谢谢 这取决于 整个 mvc 3 应用程序 的含义 ASP Ne
  • nhibernate queryover LIKE 与表达式树

    我希望向我的基本存储库类添加一个方法 该方法允许我使用LIKE表达式 但我不太确定如何去做 我想创建一个通用方法 它查看传入的表达式树并在传入的字符串值中查找通配符 然后它将生成QueryOver相应声明 我目前有以下内容 public I
  • (新格式)Visual Studio 项目中的可选 appsettings.local.json

    我的应用程序使用 appsettings json 进行某些设置 如果 appsettings local json 存在 则应覆盖 appsettings json 中包含的任何设置 到目前为止 没有问题 但我使用 git 进行版本控制
  • 如何从android模拟器访问localhost?

    我正在通过本教程学习 Xamarin 如果用邮递员发送请求 一切正常 但如果我想使用 android 模拟器 它就不起作用 而且我无法使用 UWP 因为必须启用开发人员模式 而且我在公司计算机上没有管理员权限 我在我的私人计算机上启用了开发