在解析/使用图表中的数据之前,我正试图将json数据从下面的url中获取到C#项目中的任何内容中:
https://cex.io/api/ohlcv/hd/20160228/BTC/USD
我实际上是通过用websocket发送json请求来检索json数据的,但由于某种原因,我无法用它获取任何数据。因此,我决定在不提供任何json请求的情况下获取数据,因为链接很简单。但无论我尝试了什么,结果要么是空的回报,要么是错误。有一次,我设法向ListBox添加了一大块数据(看起来像是一个完整的html页面,里面有我需要的一些数据,但我不明白整个html代码也是从哪里来的,因为链接只有json),但这也没用。尝试时
WebRequest使用HttpWebRequest时,即使使用正确的系统.net.http和其他所有系统,它也无法识别WebRequest。(试图手动添加到引用..,但它们已在列表中被选中)WebClient返回空的或无用的对象或变量类型名称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);
如果有人能帮忙,我将不胜感激。
@berkdi,你说得对MessageBox.Show显示一个空字符串。但事实上,html字符串是正确的,您可以通过将内容写入文件来查看它如CCD_ 1。
以下代码(当显示文本的前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的错误/奇怪行为/错误实现。显示
编辑
这似乎是windows控件的常见问题,这些控件不是为了显示很长的多行数据而设计的。。。
使用WebClient是很好的
var client = new System.Net.WebClient();
var jsondata = client.DownloadString(url);
会做你想做的事。我用提供的url对它进行了测试,它不会返回空字符串,而是返回json数据。我认为,在从输入控件创建url时,您可能有点损坏了url。你能验证使用的网址是否与你在这里发布的网址相同吗?也许您在用于创建url 的最后两个字符串之间缺少一个/