只需要一种简单的方法从Windows Phone请求我的服务器上的休息数据

时间:2013-06-12 21:34:49

标签: c# rest windows-phone-8 async-await

我花了一个小时看但似乎无法找到答案..当我只是引用一个服务并使用回调时这很容易..但是从Windows Phone 8我怎么只是从

http://punkoutersoftware.azurewebsites.net/api/Score (那里的简单测试数据)

对于初学者我很乐意拥有RAW Text ..从那里我喜欢把它放在一个对象中......或者如果有一个'获取REST数据进入你的Windows Phone 8 app 101'文章某个地方会有所帮助..

我假设我会以某种方式使用新的async / await作为wwell ..

到目前为止,我最好的尝试是

   private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        string uriString = "http://punkoutersoftware.azurewebsites.net/api/Score";
        var uri = new Uri(uriString);
        var httpWebRequest = HttpWebRequest.Create(uri);

        httpWebRequest.BeginGetResponse(new AsyncCallback(OnGettingResponse), httpWebRequest);
    }



    private void OnGettingResponse(IAsyncResult ar)
    {
        var req = ar.AsyncState as HttpWebRequest;
        var response = (HttpWebResponse)req.EndGetResponse(ar);
        var responseStream = response.GetResponseStream();
    }

编辑1:

这就是我需要的吗?运行该行后,responseBodyAsText似乎没有任何价值?

  private async void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        HttpClient httpClient = new HttpClient();
        string responseBodyAsText = await httpClient.GetStringAsync("http://punkoutersoftware.azurewebsites.net/api/Score");
    }

2 个答案:

答案 0 :(得分:1)

尝试使用HttpClient,它不那么笨拙并且语法更友好。

没有将数据输入手机的快捷方式,最低限度,您必须创建一个类并将json字符串反序列化为对象。有几个有用的工具可用,例如JSON.net用于反序列化,json2csharp用于懒惰的人,比如你和我直接从json创建类

我还会重新考虑将http请求放入其他事件中,将其置于加载的事件中会在每次用户来回导航时触发它

答案 1 :(得分:1)

有两个库可以帮助您在Windows Phone应用程序中使用REST:'Hammock for Windows Phone'和'RestSharp'。两者都非常丰富,可以简化反序列化。