错误请求:从android

时间:2018-01-05 06:27:35

标签: c# android xamarin asp.net-web-api

到目前为止,我一直试图寻找解决方案但没有成功,

我正在尝试从Xamarin.Android(MainActivity)调用我的ASP.NET WEB API(localhost:port)。

我在Postman中正确检查了API,它的工作方式如下面的屏幕截图所示

Postman screenshot

我在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响应,如以下屏幕截图所示

enter image description here

但在我的机器(浏览器)或Postman上尝试使用localhost

可以正常工作

enter image description here

请帮忙

更新 尝试使用此http://www.lakshmikanth.com/enable-external-request-on-iis-express/在IIS Express上启用外部请求 没有运气,

2 个答案:

答案 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());