在 C# 中从 url 获取 json 数据

getting json data from url in c#

我正在尝试将 json 数据从下面 url 获取到 C# 项目中的任何东西,然后才能 parse/use 图表中的数据:

https://cex.io/api/ohlcv/hd/20160228/BTC/USD

我实际上是通过使用 websocket 发送 json 请求来检索 json 数据,但由于某种原因无法使用 this.So 获取任何数据,我决定在没有的情况下获取数据提供任何 json 请求,因为 link 是 simple.But 无论我尝试什么,我最终都得到空的 returns 或 error.At 我设法添加的一点ListBox 的大量数据(看起来像一个完整的 html 页面,其中包含我需要的一些数据,但我无法理解整个 html 代码也来自哪里,因为 link有 json) 但这也没有用。尝试时

WebRequestHttpWebRequest 它不能识别 WebRequest 即使有正确的 system.net.http 和所有其他包括。(试图手动添加到参考文献..但他们已经在列表中检查过) WebClient returns 空的或无用的对象或变量类型名称。 HttpClient 也没有用,但不记得它不能识别的内容。当我跌入谷底时,我什至尝试放置一个 webBrowser 对象并尝试从那里读取它,但后来发现这不应该那么难,于是决定问问。

这是我到目前为止所做的:

  //HttpClient client3 = new HttpClient();
                             string url = textBox8.Text + listBox3.GetItemText(listBox3.SelectedItem) + listBox4.GetItemText(listBox4.SelectedItem);

                             MessageBox.Show(url);


                             //System.Uri uri = new System.Uri(url);
                             //webBrowser1.Url = uri;

                             System.Net.WebClient client8 = new System.Net.WebClient();
                             //client8.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"); //I dont know if this was needed but seen it on a different example and just added.
                             var html = client8.DownloadString(url);   //returns empty
                             var html2 = client8.DownloadData(url); //adds the line "System.Byte[]"
                             var html3 = client8.OpenRead(url); //adds something like "System.blabla.connectstream"
                             MessageBox.Show(html);


                             listBox1.Items.Add(html2.ToString());
                             listBox1.Items.Add(html3);

如果有人能提供帮助,我将不胜感激。

使用 WebClient 即可

var client = new System.Net.WebClient();
var jsondata = client.DownloadString(url);

会为所欲为。我已经用提供的 url 测试了它,它不是 return 空字符串,而是 json 数据。 我认为您在从输入控件创建 url 时可能会稍微弄乱它。您能否确认所使用的 url 与您在此处发布的 url 相同?也许您在用于创建 url

的最后两个字符串之间缺少 /

@berkdi,你是对的。 MessageBox.Show 显示空字符串。但实际上,你的 html 字符串是正确的,你可以通过将内容写入文件来查看它 像 File.WriteAllText("myfile.txt", html);.

下面的代码(显示文本的前 3000 个字符时)也有效

System.Net.WebClient client8 = new System.Net.WebClient();
var html = client8.DownloadString("https://cex.io/api/ohlcv/hd/20160228/BTC/USD");
Console.WriteLine(html);
MessageBox.Show(html.Substring(0, 3000));

抱歉,您点击了MessageBox.Show[=12 的bug/strangebehaviour/bad实现 =]

编辑

这似乎是 windows 控件的常见问题,这些控件并非设计用于显示很长的多行数据...