我在Xamarin开发方面真的很新,我刚刚尝试过Xamarin.Forms用共享代码开发Android&iOS应用程序,我在这里试图做的是用Plugin.RestClient NuGet软件包从API中获取数据。
这是我的MainViewModel。
public MainViewModel(){
InitializeDataAsync();
}
public async Task InitializeDataAsync(){
var employeeServices = new EmployeeServices();
EmployeesList = await employeeServices.getEmployeesAsync();
}这是我的服务
public async Task<List<Employee>> getEmployeesAsync(){
RestClient<Employee> restClient = new RestClient<Employee>();
var employeeList = await restClient.GetAsync("http://localhost:3000/employee");
return employeeList;
}这是我的RestClient
public async Task<List<T>> GetAsync(string WebServiceUrl){
var httpClient = new HttpClient();
var json = await httpClient.GetStringAsync(WebServiceUrl);
Debug.WriteLine(WebServiceUrl);
Debug.WriteLine(json);
var taskModels = JsonConvert.DeserializeObject<List<T>>(json);
return taskModels;
}这段代码在我的iPhone模拟器上运行得很好。我可以看到我的调试网站url和json的响应。但是在我的Android模拟器上没有任何东西。我甚至找不到用于url和json响应的Debug,我已经检查了我的应用程序输出和设备日志(我使用了Xamarin Studio for Mac )。
我也已经在我的Android上添加了互联网许可。我该怎么办?
发布于 2016-12-08 13:18:08
您只能访问本地计算机上的localhost。您需要将localhost更改为承载api的机器的IP地址。
所以api端点用于
http://localhost:3000/employee应该是这样的
http://192.168.0.5:3000/employee发布于 2016-12-08 19:59:29
如果您收到超时错误,那么可能是因为Android操作系统的"localhost“意味着电话本身,这可能不是您没有运行web服务器的地方。在使用Android仿真器进行测试时,可以使用一些特殊的IP地址来访问主机操作系统:
您可以尝试根据所使用的模拟器类型更改您的URL。或者,您可以插入您的工作站IP地址,但这是不可取的,因为它可以改变。
如果这不允许您到达服务器,那么您可以考虑查看任何防火墙,以查看您的通信是否被阻塞。
https://stackoverflow.com/questions/41040103
复制相似问题