【问题标题】:Android Emulator with Localhost ASP.Net Core API Calls带有 Localhost ASP.Net Core API 调用的 Android 模拟器
【发布时间】:2017-11-26 07:10:47
【问题描述】:

我一直在尝试从 Visual Studio 的 Android 模拟器向本地主机上运行的 ASP.Net Core API 执行 GET 请求。我首先读到我必须在执行来自 Android 的请求时使用 IP 10.0.2.2,所以我的 Android (Xamarin) 应用程序中有以下 HTTP 客户端代码

protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView (Resource.Layout.Main);

            var logInbutton = FindViewById<Button>(Resource.Id.logInButton);

            logInbutton.Click += OnLogInButtonClicked;
        }

        private async void OnLogInButtonClicked(object sender, EventArgs e)
        {
            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));


                var uri = new Uri("http://10.0.2.2:5555/api/Orders?api-version=0.9");
                var response = await client.GetAsync(uri);
            }
        }

但是,每次我尝试运行它时,都会收到 400 Bad Request 错误。我知道请求没问题,因为我可以从控制台应用程序运行相同的 Http 客户端代码而不会出现任何错误。然后我读到 IIS express 不接受外部请求,并且由于 Android 模拟器在 VM 中运行,这可能是原因。

然后我遵循了SO post 的建议,但遇到了Invalid URI: The hostname could not be parsed 错误。我不确定如何从这里开始。 Invalid URI: The hostname could not be parsed 错误是否有解决方案,或者我是否应该尝试绕过 IIS Express 并仅使用 kestrel 运行以进行开发?甚至只在 kestrel 中运行也能解决这个问题吗?

【问题讨论】:

  • 经常引用的解决方案是更改配置文件,但您可以使用我们名为 Conveyor 的免费 VS 扩展程序来避免这种情况,marketplace.visualstudio.com/…

标签: asp.net-core android-emulator iis-express kestrel-http-server


【解决方案1】:

我在通过 kestrel 运行时尝试连接时遇到了同样的问题。对我来说,它使用此配置进行启动设置:

【讨论】:

    【解决方案2】:

    我也有类似的问题。

    首先,让我们找到正确的 applicationhost.config 文件。 你应该检查这个位置:

    [solution folder]/.vs/config/applicationhost.config
    

    然后人们建议像这样设置绑定:

    <binding protocol="http" bindingInformation="*:5555:*" />
    

    它对我不起作用。我收到“无效的 URI:无法解析主机名”。

    对我有用的是这样的语法:

    <binding protocol="http" bindingInformation=":5555:" />
    

    请注意,端口 5555 仅作为示例。您应该使用您的服务器正在侦听的端口。

    【讨论】:

      猜你喜欢
      • 2014-12-31
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 2019-03-22
      • 2015-07-25
      • 1970-01-01
      相关资源
      最近更新 更多