Xamarin Web服务在设备浏览器中可用,但在应用程序中不可用

Xamarin Web服务在设备浏览器中可用,但在应用程序中不可用,xamarin,xamarin.android,xamarin.forms,Xamarin,Xamarin.android,Xamarin.forms,我目前正在开发一个Xamarin表单应用程序,并试图调用一个从物理android设备本地运行的RESTAPI。我可以浏览到url 在设备上的Opera/Chrome中,并获得预期的JSON结果。我还能够从Play Store中提供的一些REST API客户端应用程序中成功调用REST API。然而,当我试图从我的应用程序调用RESTAPI时,我得到了一个连接被拒绝错误。你知道为什么会这样吗?以下是用于调用REST API的代码: private string baseUrl = @"http:

我目前正在开发一个Xamarin表单应用程序,并试图调用一个从物理android设备本地运行的RESTAPI。我可以浏览到url

在设备上的Opera/Chrome中,并获得预期的JSON结果。我还能够从Play Store中提供的一些REST API客户端应用程序中成功调用REST API。然而,当我试图从我的应用程序调用RESTAPI时,我得到了一个连接被拒绝错误。你知道为什么会这样吗?以下是用于调用REST API的代码:

private string baseUrl = @"http://localhost:3000/api/";
    private HttpClient client;

    public RestService() {
        client = new HttpClient();
        client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
    }

    public async Task<List<Order>> GetOrdersForInitialSync(Guid id) {
        var uri = new Uri(baseUrl + @"orders_initial/" + id.ToString());
        var response = await client.GetAsync(uri);
        if (response.IsSuccessStatusCode) {
            var content = await response.Content.ReadAsStringAsync();
            return JsonConvert.DeserializeObject<List<Order>>(content);
        }
        else {
            return new List<Order>();
        }
    }
}
private string baseUrl=@”http://localhost:3000/api/";
私有HttpClient;
公共服务(){
client=新的HttpClient();
client.DefaultRequestHeaders.Accept.Add(新的System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(“应用程序/json”);
}
公共异步任务GetOrdersForInitialSync(Guid id){
var uri=new uri(baseUrl+@“orders_initial/”+id.ToString());
var response=await client.GetAsync(uri);
if(响应。IsSuccessStatusCode){
var content=await response.content.ReadAsStringAsync();
返回JsonConvert.DeserializeObject(内容);
}
否则{
返回新列表();
}
}
}

不要使用本地主机,请使用服务器的IP或FQDN。还要确保你的应用程序在清单中设置了必要的权限。使用IP不起作用。localhost在我从Play Store下载的浏览器和REST API客户端应用程序中运行良好。你知道什么是正确的权限吗?我已设置了INTERNET权限。还有其他的吗?localhost应该回送到运行代码的设备/模拟器,而不是托管服务的服务器。即使emulator与服务运行在同一台机器上,它们也应该分配不同的IP。使用localhost显然不是问题所在。如果是,那么我问题中的URL将无法在设备的浏览器和设备上的其他应用程序中工作。我的adb配置为将localhost:3000反向转发到我的桌面。好的,很高兴知道。这里针对移动服务发布的99.9%的连接问题与不了解localhost在移动设备上的工作方式有关。您可能需要启动数据包嗅探器,并将来自应用程序的请求与来自测试客户端的请求进行比较,以了解两者之间的区别。