2015-04-22 3 views
0

Я использую 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, чтобы я мог использовать его в моем представлении?
+0

Вы можете использовать сторонние библиотеки? Если это так, вы можете попробовать что-то вроде [RestSharp] (http://restsharp.org/) –

+0

Предполагаю, что я использую это в клиентском приложении, которое я пишу сейчас, которое потребляет данные из веб-службы? – Ortund

+0

Да, вы используете его на стороне клиента. Он будет автоматически читать и десериализовать данные ответа для вас, если он был сериализован как JSON или XML. –

ответ

1

Вы можете использовать sr.ReadToEnd(), чтобы получить всю строку ответа. По крайней мере, вы сможете установить точку останова и посмотреть на это в отладчике, чтобы убедиться, что вы возвращаете то, что ожидаете. Затем либо напишите функцию для анализа вашего результата в какой-то класс, либо используйте стороннюю библиотеку для их анализа, если они находятся в стандартном формате; то есть, если результатом является JSON, то используйте Json.NET.

Примечание. Вы можете также использовать встроенные операции async, если проблема блокировки является проблемой (обычно это не для простых клиентских приложений, но все же это был бы хороший способ узнать).

+0

Итак, вот что посылает служба ... Можете ли вы подтвердить, что этот тип результата - 'application/json'? http://i.imgur.com/0GX3VMK.png – Ortund

+0

@Ortund Я точно не знаю, что это значит. Похоже, что что-то уже разобрано (полная догадка) WCF, или что-то еще, что я раньше не использовал. Я бы предположил, что вы должны иметь возможность выполнить команду var var = (List ) response.Content.Value' или что-то в этом роде, чтобы получить желаемые результаты. –

+0

Это из ASP.NET Web API. Он еще не сериализовал объект, но похоже, что он будет сериализовать его как JSON, потому что 'Content-Type' является' application/json', и он использует 'JsonMediaTypeFormatter'. –

Смежные вопросы