[英]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.