到目前为止,我一直试图寻找解决方案但没有成功,
我正在尝试从Xamarin.Android(MainActivity)调用我的ASP.NET WEB API(localhost:port)。
我在Postman中正确检查了API,它的工作方式如下面的屏幕截图所示
我在Xamarin MainActivity中的代码如下
try
{
using (var c = new HttpClient())
{
var client = new System.Net.Http.HttpClient();
var response = await client.GetAsync(new Uri("http://10.0.2.2:57348/api/remote"));
if (response.IsSuccessStatusCode)
{
Log.Info("myApp", "SUCCESS");
}
else
{
Log.Info("myApp", "ERROR: " + response.StatusCode.ToString());
}
}
}
catch (Exception X)
{
Log.Info("myApp", X.Message);
return X.Message;
}
我相信10.0.2.2
是从模拟器连接到localhost
-
当我运行代码时,我的错误状态为BadRequest
我也尝试了类似下面的内容
try
{
Uri uri = new Uri("http://10.0.2.2:57348/api/remote");
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = "GET";
using (WebResponse response = await request.GetResponseAsync())
{
using (Stream stream = response.GetResponseStream())
{
Log.Info("myApp", "Success");
}
}
}
catch (Exception X)
{
Log.Info("myApp", X.Message);
}
我得到400 Bad Request
400错误请求意味着我做错了,因为假设我的代码可以连接到API,但服务器正在考虑将API调用作为invalid
?
如果有人想知道我的API中的代码,以下是
public class remoteController : ApiController
{
// GET: api/remote
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
任何人都对此有任何想法,我一直在尝试不同的事情几个小时没有运气。
另外,只是添加,我试过了http://10.0.2.2:57348/api/remote&#39;在我的Android模拟器的Chrome中,我仍然会收到Bad Request
响应,如以下屏幕截图所示
但在我的机器(浏览器)或Postman上尝试使用localhost
请帮忙
更新 尝试使用此http://www.lakshmikanth.com/enable-external-request-on-iis-express/在IIS Express上启用外部请求 没有运气,
答案 0 :(得分:0)
请求是&#34;坏&#34;因为主机头(在请求中)是你的10.x.x.x. IP Express,而不是IIS Express不接受的localhost。
我们有一个名为&#34; Conveyor&#34;的扩展程序,它是免费的,如果没有配置更改,它会将IIS Express打开到网络上的其他计算机。
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti#overview
答案 1 :(得分:-1)
我认为是因为交叉来源错误在startup.cs中添加了这个(在configure方法中)
app.UseCors(x => x
.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());