【发布时间】:2014-07-17 10:24:52
【问题描述】:
您好,我创建了一个包含 3 个项目的解决方案。我的解决方案有一个 Windows 控制台应用程序、一个 Xamarin Android 项目和一个可移植类库 (PCL)。我在控制台和 Android 应用程序中都引用了我的 PCL。我的 PCL 有我的模型和视图模型,我正在从视图模型调用 Web API。这是一个示例视图模型
public class RoutineViewModel
{
public async Task<IEnumerable<Routine>> GetRoutines()
{
//Lets Get List from Routines Web API
try
{
var client = new HttpClient();
var json = await client.GetStringAsync(BroadCastApiUrls.Routines);
var results = JsonConvert.DeserializeObject<IEnumerable<Routine>>(json);
if (results.Any())
return results;
return null;
}
catch (Exception ex)
{
//Some logging code here
return null;
}
}
}
我在按钮单击处理程序的方法调用中通过此 RoutineViewModel 的实例进行制作,这里是调用 GetRoutines 方法的代码
//In the Activity class
readonly RoutineViewModel routineViewModel = new RoutineViewModel();
private async Task<bool> LoadRoutines()
{
try
{
var routines = await routineViewModel.GetRoutines();
if (routines != null)
{
routinesList = routines.ToList();
listView.Adapter = new RoutinesListAdapter(this, routinesList);
}
else
{
var builder = new AlertDialog.Builder(this);
var alert = builder.Create();
alert.SetTitle("No Results!");
// alert.SetIcon(Resource.Drawable)
alert.SetMessage("No Routines From API!");
alert.DismissEvent += alert_DismissEvent;
alert.Show();
return true;
}
}
catch (Exception ex)
{
//Some logging and clean up code
}
return false;
}
此调用从我的控制台应用程序返回预期结果,但我的 android 模拟器上的相同方法调用未返回任何结果。我在这里想念什么?它让我发疯。
编辑
来自 loadRoutines 点击处理程序的调用是
bool isLoaded = await LoadRoutines();
【问题讨论】:
-
请显示 LoadRoutines 调用
-
编辑了帖子。最大的问题是 LoadRoutines 中的以下代码部分返回 null 'code' var routines = await routineViewModel.GetRoutines();当控制台应用程序中的相同调用给出结果时的“代码”
-
您的应用是否有 Internet 权限?您是否尝试过单步执行代码以检查错误、异常等?
-
是的,我已经通过了代码.. 它只是给出了空结果
-
嗨 Jason,您所说的 Internet 权限是什么意思?
标签: c# android xamarin.ios xamarin httpclient