Argument1:无法从'System.IO.Stream'转换为'String'

时间:2016-09-20 07:14:28

标签: c# json rest uwp

我对此很难过,可以使用一些帮助。我已经完成了网络搜索,并阅读了过去几个小时的文档,并且没有运气。

我收到一条错误,该错误从“JObject o = JObject.Parse(response);”的“response”重载条目中读取如下内容。线。

  

Argument1:无法从'System.IO.Stream'转换为'string'

static void MyFunction(out string Value1, out string Value2)
{
    HttpClient client = new HttpClient();
    var response = client.GetStreamAsync("My URI").Result;
    JObject o = JObject.Parse(response);
    Value1 = (string)o.SelectToken("PressureReading");
    Value2 = (string)o.SelectToken("PressureTrend");
}

我在控制台应用程序项目中使用webclient运行此代码。但是,由于这是一个UWP项目,我无法使用webclient(并且我需要使用HttpClient)。另外,我从REST API解析的JSON字符串如下:

{"ID":8,"Site":"EstevanPointCanada","PressureReading":"30.05     ","PressureTrend":"0         "}

为了编译上述函数,我需要做些哪些更改?

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:6)

JObject.Parse需要string,而不是Stream。您正尝试将response传递给Stream

要修复它,只需使用HttpClient.GetStringAsync代替,例如

using (HttpClient client = new HttpClient())
{
    var response = client.GetStringAsync("My URI").Result;
    JObject o = JObject.Parse(response);
    Value1 = (string)o.SelectToken("PressureReading");
    Value2 = (string)o.SelectToken("PressureTrend");
}

请注意,如果您发现自己因此类错误而感到困惑,那么值得明确所有类型 - 如果您使用response而不是var进行显式输入,则会非常显而易见的是,你期望它是string而它不是,或者你认为它是Stream而是JObject.Parse }不接受流......