不能从'System.IO.Stream'& # 39;字符串# 39;

本文关键字:字符串 Stream System 不能 IO | 更新日期: 2023-09-27 18:07:54

我被这个问题难住了,可能需要一些帮助。在过去的几个小时里,我做了网络搜索,并阅读了文档,但没有运气。

我得到一个错误,从"JObject o = JObject. parse (response);"行的"response"重载条目中读取如下内容。

参数1:不能从System.IO转换。流'到'字符串'

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项目,我无法使用web客户端(我需要使用HttpClient)。另外,我从我的REST API解析的JSON字符串如下:

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

我需要做什么改变才能使上面的函数编译?

事先感谢您提供的帮助。

不能从'System.IO.Stream'& # 39;字符串# 39;

JObject.Parsestring,不取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不接受流…