从Web服务读取响应数据

时间:2015-04-22 23:48:19

标签: c# asp.net asp.net-mvc asp.net-web-api2

我使用this将我的客户端应用程序挂钩到我的网络服务中 另外,我looking at MSDN关于根据第一个链接阅读GetResponse。

这是我到目前为止的代码:

    public ActionResult Index()
    {
        WebRequest request = WebRequest.Create("http://localhost:49474/api/Store/Get");
        request.Method = "GET";
        WebResponse response = request.GetResponse();

        Stream stores = response.GetResponseStream();
        Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

        StreamReader sr = new StreamReader(stores, encode);
        Char[] read = new Char[1024];

        int count = sr.Read(read, 0, 1024);
        List<Store> storesList = new List<Store>();

        while (count > 0)
        {
            // need to read the contents of the response strem into the above instantiated list of stores.
        }
    }

我的API提供如下数据:

    public HttpResponseMessage Get()
    {
        List<Store> stores = db.Stores.ToList();

        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, stores);

        return response;
    }

坦率地说,我不确定下一步该往哪里去。 MSDN链接将所有内容写入字符串,但我担心的是:

  • 我怎么知道每个记录一次需要阅读多少个字符?
  • 如何阅读API发送的数据,以便在我的视图中使用它?

1 个答案:

答案 0 :(得分:1)

您可以使用sr.ReadToEnd()获取整个响应字符串。至少你可以设置一个断点并在调试器中查看它,以确保你得到你期望的回报。然后编写一个函数将结果解析为某种类,或者如果它们是标准格式,则使用第三方库来解析它们;即如果结果是JSON则使用Json.NET。

请注意,如果需要阻止,您也可以使用内置的异步操作(通常不是简单的客户端应用程序,但它仍然是一种很好的学习方式)。