我在Xamarin开发方面真的很新,我刚试过Xamarin.Forms开发Android&带有共享代码的iOS应用程序,以及我在这里尝试做的是使用Plugin.RestClient NuGet包从API获取数据。
这是我的MainViewModel。
sed -e 's/\(something\)/\\\\\1/g' file
这是我的服务
public MainViewModel(){
InitializeDataAsync();
}
public async Task InitializeDataAsync(){
var employeeServices = new EmployeeServices();
EmployeesList = await employeeServices.getEmployeesAsync();
}
这是我的RestClient
public async Task<List<Employee>> getEmployeesAsync(){
RestClient<Employee> restClient = new RestClient<Employee>();
var employeeList = await restClient.GetAsync("http://localhost:3000/employee");
return employeeList;
}
我的iPhone模拟器上的代码运行正常。我可以看到我的调试url和json响应。但是在我的Android模拟器上,列表中没有任何内容。我甚至无法找到我的调试url和json响应,我已经检查了我的应用程序输出和我的设备日志(我使用Xamarin Studio for Mac btw)。
我还在Android Manifest上添加了互联网权限。 我该怎么办?
答案 0 :(得分:1)
您只能访问本地计算机上的localhost
。您需要将localhost
更改为托管api的计算机的IP地址。
所以
的api端点http://localhost:3000/employee
应该是
http://192.168.0.5:3000/employee
答案 1 :(得分:0)
如果你得到一个超时错误,那么可能是因为Android操作系统的“localhost”意味着手机本身,这可能不是你没有运行网络服务器的地方。在使用Android模拟器测试以访问主机操作系统时,您可以使用一些特殊的IP地址:
您可以尝试根据您使用的模拟器类型更改URL。或者,您可以插入工作站的IP地址,但这不太可取,因为它可以更改。
如果这不允许您访问服务器,那么您可以考虑查看任何防火墙以查看您的流量是否被阻止。