[英]C# JSON to String with Visual Studio 2017
我正在Visual Studio 2017中構建UWP應用,我想將Office365 REST API的JSON響應轉換為字符串,以在XAML中顯示它。
HttpClient client2 = new HttpClient();
var token2 = await AuthenticationHelper.GetTokenHelperAsync();
client2.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
HttpResponseMessage eventresponse = await client2.GetAsync(new Uri("https://outlook.office.com/api/v2.0/me/calendarview?startDateTime=2017-01-01T00:00:00&endDateTime=2017-04-05T12:00:00"));
我無法獲取json.net,我認為它不兼容。 我嘗試了以下方法:
using (Stream stream = eventresponse)
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
但是我無法將HttpResponseMessage轉換為System.IO.Stream。
看起來JavaScriptSerializer不適用於UWP Apps。
DataContractJsonSerializer也無法轉換為char。
所以即時通訊用盡了可能的解決方案/監督了我犯的一個大錯誤。
更改
using (Stream stream = eventresponse)
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
至
string responseString = await eventresponse.Content.ReadAsStringAsync();
或使用類似您的代碼的流。
if (eventresponse.IsSuccessStatusCode)
{
using (Stream stream = await eventresponse.Content.ReadAsStreamAsync())
{
using (StreamReader reader = new StreamReader(stream))
{
var responseString = reader.ReadToEnd();
}
}
}
就HttpResponseMessage
而言,響應主體是一系列字節。 不管它們實際代表什么。
您可以通過Content
成員訪問這些字節,並使用該成員上的方法來指示應如何處理這些字節( 包括以Stream的形式訪問它們 )。
在您的情況下,您指示需要一個字符串,因此可以使用ReadAsStringAsync()
。
您需要GetResponse...。
Stream receiveStream = response.GetResponseStream ();
StreamReader readStream = new StreamReader (receiveStream, Encoding.UTF8);
txtBlock.Text = readStream.ReadToEnd();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.