Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2013 Restful服务总是以Xamarin形式返回空值_Visual Studio 2013_Xamarin_Xamarin Studio_Xamarin.forms - Fatal编程技术网

Visual studio 2013 Restful服务总是以Xamarin形式返回空值

Visual studio 2013 Restful服务总是以Xamarin形式返回空值,visual-studio-2013,xamarin,xamarin-studio,xamarin.forms,Visual Studio 2013,Xamarin,Xamarin Studio,Xamarin.forms,我正在使用“Xamarin表单”开发一个应用程序,我正在使用Visual Studio 2013开发该应用程序。 我的问题是, 在我的应用程序中,我使用restful服务发布/获取数据。 整个代码都是在“Xamarin共享项目”中编写的 这是我的密码: using System.Threading.Tasks; using System.Net.Http; namespace Sher.Services { public class CustomerService : ICustome

我正在使用“Xamarin表单”开发一个应用程序,我正在使用Visual Studio 2013开发该应用程序。 我的问题是, 在我的应用程序中,我使用restful服务发布/获取数据。 整个代码都是在“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();
    }
}
使用System.Threading.Tasks;
使用System.Net.Http;
命名空间服务器服务
{
公共类CustomerService:ICCustomerService
{
公共异步任务TopEntries(字符串uri)
{
var client=新的HttpClient();
var result=await client.GetStringAsync(uri);/“http://api.ihackernews.com/page"
返回结果;
}
}
公共接口ICCustomerService
{
任务TopEntries();
}
}
在这里,我面临着一个小问题。 我能够在我的服务器中调用服务方法和执行服务方法。 但返回的结果总是“NULL”。我不知道为什么。 有人能帮我解决这个问题吗。
提前感谢。

是的,异步方法就是这样工作的。当发出异步调用(wait关键字)时,它们将退出,并在异步调用完成后从该点继续。
尝试在“return result;”行中放置断点。

如何知道它是否真的为空?请注意,在这种情况下获取数据时,异步方法将立即退出并继续。@MihaMarkic当我逐行执行时,在这一行“var result=wait client.GetStringAsync(uri);”之后,Controller移动到方法的末尾。它不会移到下一行。当您调用TopEntries(string)函数时,请尝试这样做:TopEntries(string).ContinueWith(t=>…);如果你能把一个小例子打包并通过电子邮件发送给我,我会看一看。我的联系人详细信息在我的个人资料中。我将断点放在“返回结果”行中。但是没有用。我怎样才能解决这个问题。是否有其他方法解决此问题。请在try/catch中输入“var result=wait…”。这可能是您遇到的一个异常。我将代码放在try/catch中,但没有任何用处。它再次移动到方法的末尾,您必须等待异步调用完成。然后它将到达断点。除非调试器有问题。除了断点之外,还可以尝试使用Debug.WriteLine。当您调用TopEntries(string)函数时,请尝试这样做:TopEntries(string).ContinueWith(t=>…);并检查t是否存在异常