我无法在Webbrowser控件中加载较大的JSON。使用IE11和此reg加载JSON而不是下载它。
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00
如果我下载文件,则它有7.329.068个字符。 如果将其加载到webbrowser控件(或WebClient)中并访问webBrowser2.Document.Body.InnerText,则它只有2.634.268个字符。
有趣的是,文件没有被切碎。文件中缺少子元素。在记事本++中已选中tis。
最大的问题是,即使没有注册表解决方法,并且Webclient都无法下载文件,该文件也不完整。
由于在这种情况下难以处理会话,因此我必须使用webbrowser控件。 JSON是1行文件,包含5百万个字符。 JSON文件使用JavaScriptSerializer反序列化,并且可以在给定JSON的情况下正常工作
private void GetJsonView(string url_)//object sender, EventArgs e)
{
webBrowser2.Navigate(new Uri(url_));
webBrowser2.Navigate(url_);
}
private void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
innerText = webBrowser2.Document.Body.InnerText;
JavaScriptSerializer test = new JavaScriptSerializer();
test.MaxJsonLength = Int32.MaxValue;
sicht = test.Deserialize<View>(innerText);
}
替代方法,而不是注册表项,给出相同的丢失节点结果
private void webBrowser2_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (e.Url.Segments[e.Url.Segments.Length - 1].EndsWith("/"))
{
e.Cancel = true;
string filepath = null;
saveFileDialog1.FileName = e.Url.Segments[e.Url.Segments.Length - 1];
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
filepath = saveFileDialog1.FileName;
WebClient client = new WebClient();
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
client.DownloadFileAsync(e.Url, filepath);
}
}
}
就目前而言,我不知道IE为什么要“隐藏”某些节点。文件是保存还是直接解析为我的方法的字符串都没有关系。主要目标是接收整个有效载荷,我不知道如何实现这一目标。