【发布时间】: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