【问题标题】:Restful service always returns null value in Xamarin FormsRestful 服务始终在 Xamarin Forms 中返回空值
【发布时间】:2015-01-04 06:53:44
【问题描述】:

我正在使用“Xamarin Forms”开发一个应用程序,并且我正在使用 Visual Studio 2013 来开发该应用程序。 我的问题是, 在我的应用程序中,我使用宁静的服务来发布/获取数据。 整个代码写在“Xamarin 共享项目”中 这是我的代码:

using System.Threading.Tasks;
using System.Net.Http;

namespace Sher.Services
{
    public class CustomerService : ICustomerService
    {
        public async Task<string> TopEntries(String uri)
        {
            var client = new HttpClient();
            var result = await client.GetStringAsync(uri); //"http://api.ihackernews.com/page"
            return result;
        }
    }

    public interface ICustomerService
    {
        Task<string> TopEntries();
    }
}

在这里我面临一个小问题。 我可以调用服务方法并在我的服务器中执行服务方法。 但返回结果总是给出“NULL”。我不知道为什么。 谁能帮我解决这个问题。 提前致谢。

【问题讨论】:

  • 你怎么知道它是否真的为空?请注意,在这种情况下,当获取数据时,异步方法将立即退出并继续。
  • @MihaMarkic 当我逐行执行时,在此行之后“var result = await client.GetStringAsync(uri);”控制器移动到方法的末尾。它不会移动到下一行。
  • 当您调用 TopEntries(string) 函数时,请尝试这样做: TopEntries(string).ContinueWith(t=> ... );并检查 t 是否有异常
  • 如果你能打包一个小例子发邮件给我,我去看看。我的联系方式在我的个人资料中。

标签: visual-studio-2013 xamarin xamarin-studio xamarin.forms


【解决方案1】:

是的,这就是异步方法的工作方式。当进行异步调用(await 关键字)时,它们退出并在异步调用完成后从该点继续。 尝试在“返回结果”中设置断点;行。

【讨论】:

  • 我把断点放在“返回结果”行。但没有用。我怎么解决这个问题。有没有其他方法可以解决这个问题。
  • 把“var result = await ...”放在try/catch中。这可能是您遇到的一个例外。
  • 我把代码放在 try/catch 中,但没有用。它再次移动到方法的末尾。
  • 您必须等待异步调用完成。然后它将到达断点。除非调试器有问题。除了断点之外,还尝试使用 Debug.WriteLine。
  • 当您调用 TopEntries(string) 函数时,请尝试这样做: TopEntries(string).ContinueWith(t=> ... );并检查 t 是否有异常
猜你喜欢
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 2022-01-16
  • 2018-06-11
  • 2020-08-25
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
相关资源
最近更新 更多