Xamarin 试图从 web 服务中获取用户,立即崩溃

Posted

技术标签:

【中文标题】Xamarin 试图从 web 服务中获取用户,立即崩溃【英文标题】:Xamarin trying to get users from webservice, immediate crash 【发布时间】:2013-12-26 13:41:19 【问题描述】:

你好,***,

我正在学习如何在 Xamarin 中构建 android 应用程序的教程,但我遇到了一个我无法自行解决的错误。 希望你们中的任何人都可以了解如何从这里开始:

此代码复制自教程本身(来源:pluralsight)

private JsonServiceClient client;
private IList<User> users;

void PopulateSelectUsers ()
    
        var response = client.Get(new Users());
        users = response.Users.ToList ();

        var names = users.Select (u => u.Name);

        var usersSpinner = FindViewById<Spinner> (Resource.Id.usersSpinner);
        usersSpinner.Adapter = new ArrayAdapter<string> (this, Android.Resource.Layout.SimpleListItem1, names.ToArray ());
    

其中“用户”是一个请求:

public object Get(Users request)

    return new UsersResponse  Users = Repository.GetUsers() ;


[Route("/users", "GET")]
public class Users : IReturn<UsersResponse>



public class UsersResponse

    public IEnumerable<User> Users  get; set; 

但是一旦 Xamarin 阅读了这行代码:

var response = client.Get(new Users());

然后模拟器中的应用程序崩溃了,Xamarin 没有给我留下关于发生了什么或如何修复它的信息。..

看来这段代码在教程中有效,正如我之前提到的,Xamarin 没有给我留下关于发生了什么或如何修复它的信息,所以我的问题是,也许你们中的一个人知道正在发生什么或者可能是一种方法要解决这个问题。

另外也许值得一提的是,我正在使用 redis 来存储用户。

如果您想查看用户服务,请点击此处: http://shan13alwo.cloudapp.net/api/metadata 您可以通过将 JSON GET 发送到 http://shan13alwo.cloudapp.net/api/users 来检查代码是否有效

提前谢谢你,

更新: 我意识到我可能不清楚自己想要做什么,只是为了简化。我想要做的是从我的 redis 数据库中获取我的用户(ienumerable)并将它们存储在一个列表中。在 Xamarin 中使用此代码不起作用:

var response = client.Get(new Users()); users = response.Users.ToList ();

【问题讨论】:

您在通话前是否设置了客户端连接? client = new JsonServiceClient("http://host:8080/"); 嗨@Scott,是的。此行也是代码的一部分:client = new JsonServiceClient("http://shan13alwo.cloudapp.net/api"); 教程中的所有内容都遵循指向,如果我注释掉 PopulateSelectUsers () 函数,那么它就可以工作。 如果您将项目设置为纯控制台应用程序,而不在 Android 上运行它会发生什么? 另外这个例子也正确返回一串json数据:client = new JsonServiceClient("http://shan13alwo.cloudapp.net/api"); var response = client.Get&lt;string&gt; ("users"); Console.WriteLine (response); 对不起,斯科特,我不确定我是否在关注。您是指 Xamarine 或 Visual Studio 中的控制台应用程序吗?该项目有效,通过使用谷歌休息控制台发送GETS或手动转到shan13alwo.cloudapp.net/api/users创造奇迹.. 【参考方案1】:

正如 Scott 之前向我指出的,在 *** 上的另一个主题中: ServiceStack v4 刚刚发布,在 Xamarin 和 Visual Studio 中使用不同版本的 servicestack 库导致了这种奇怪的行为。

恢复到 ServiceStack 的 V3 解决了我的问题。

我要感谢 Scott 的帮助,并想问最后一件事: 我在哪里可以下载 VERSION 3,Android 的 ServiceStack 库的免费许可版本? (认为​​它被称为“AndroidIndie”) 使用 ServiceStack 的 lib 文件夹中的库下载并编译解决方案会导致“评估软件,构建有效期为 24 小时”。

提前谢谢你。

【讨论】:

以上是关于Xamarin 试图从 web 服务中获取用户,立即崩溃的主要内容,如果未能解决你的问题,请参考以下文章

从Xamarin Forms请求Web API中的JWT时获取错误请求

使用 google play 服务在 Xamarin 中获取用户位置

在 HttpClient 异常上显示 AlertDialog (Xamarin Android)

在xamarin android中无法从FirebaseAuth获取刷新令牌。

如何使用 Xamarin 调用 Web 服务?

是否有任何受支持的方式可以从跨平台 Xamarin 代码调用 asmx Web 服务?