Webbrowser控件的InnerText中大JSON的C#问题

时间:2019-06-19 09:40:18

标签: c# .net json internet-explorer-11 webbrowser-control

我无法在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为什么要“隐藏”某些节点。文件是保存还是直接解析为我的方法的字符串都没有关系。主要目标是接收整个有效载荷,我不知道如何实现这一目标。

0 个答案:

没有答案