1

我无法在 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 个字符。

有趣的是,文件没有被切碎。文件中缺少子元素。在 Notepad++ 中检查 tis。

最大的问题是,即使没有注册表解决方法和 web 客户端下载文件也不完整。

由于在这种情况下难以处理会话,我必须使用 webbrowser 控件。JSON 是一个 1 行文件,包含超过 500 万个字符。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 会“隐藏”一些节点。文件是保存还是直接解析为我的方法的字符串都没有关系。主要目标是接收整个有效载荷,我不知道如何实现这一目标。

4

0 回答 0