从Web服务读取响应数据
我正在使用this将我的客户端应用程序挂接到我的Web服务中。
另外,我是looking at MSDN关于读取第一个链接的GetResponse。从Web服务读取响应数据
下面是我到目前为止已经获得了代码:
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发送的数据以便我可以在我的视图中使用它?
您可以使用sr.ReadToEnd()
来获取整个响应字符串。至少你可以设置一个断点并在调试器中查看,以确保你获得了期望的结果。然后写一个函数来解析你的结果到某种类中,或者使用第三方库来解析它们,如果它们是标准格式的;即如果结果是JSON,则使用Json.NET。
注意,如果阻塞是一个问题(通常它不适用于简单的客户端应用程序,但仍然是学习的好方法),您还可以使用内置的异步操作。
所以这里是服务发送的内容...你能确认这个结果类型是'application/json'吗? http://i.imgur.com/0GX3VMK.png – Ortund
@Ortund我不确定这究竟是什么结果。看起来像已经被(完全猜测)WCF解析出来的东西,或者其他我以前没有用过的东西。我想你应该可以做'var stores =(列表
它来自ASP.NET Web API。它还没有序列化对象,但它看起来像将它序列化为JSON,因为'Content-Type'是'application/json',它使用'JsonMediaTypeFormatter'。 –
你打算使用第三方库吗?如果是这样,你可能想尝试类似[RestSharp](http://restsharp.org/) –
我假设我在客户端应用程序中使用它,现在正在编写使用Web服务中的数据? – Ortund
是的,你在客户端使用它。它会自动读取和反序列化您的响应数据,只要它被序列化为JSON或XML。 –