我对此很难过,可以使用一些帮助。我已经完成了网络搜索,并阅读了过去几个小时的文档,并且没有运气。
我收到一条错误,该错误从“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 "}
为了编译上述函数,我需要做些哪些更改?
提前感谢您提供的任何帮助。
答案 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
}不接受流......