Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从XMLHttpRequest读取JSON响应内容?_C#_Winforms_Xmlhttprequest_Cefsharp - Fatal编程技术网

C# 如何从XMLHttpRequest读取JSON响应内容?

C# 如何从XMLHttpRequest读取JSON响应内容?,c#,winforms,xmlhttprequest,cefsharp,C#,Winforms,Xmlhttprequest,Cefsharp,注意:我正在使用浏览器进行此操作。 目标 我试图从XMLHttpRequest读取每个JSON响应 我试过的 问题 我无法读取JSON响应,因为流为空 问题: 如何从XMLHttpRequest读取JSON响应内容 我在这方面非常缺乏经验。因此,如果我遗漏了任何有用的信息:请让我知道,我会提供它。我有一个解决方案。 我正在使用CEF49 我们在一个过滤器中读取它: public class TestJsonFilter:IResponseFilter { public List<b

注意:我正在使用浏览器进行此操作。

目标 我试图从XMLHttpRequest读取每个JSON响应

我试过的 问题 我无法读取JSON响应,因为为空

问题: 如何从XMLHttpRequest读取JSON响应内容

我在这方面非常缺乏经验。因此,如果我遗漏了任何有用的信息:请让我知道,我会提供它。我有一个解决方案。
我正在使用CEF49

我们在一个过滤器中读取它:

public class TestJsonFilter:IResponseFilter
{
    public List<byte> DataAll = new List<byte>();

    public FilterStatus Filter(System.IO.Stream dataIn, out long dataInRead, System.IO.Stream dataOut, out long dataOutWritten)
    {
        try
        {
            if (dataIn == null || dataIn.Length == 0)
            {
                dataInRead = 0;
                dataOutWritten = 0;

                return FilterStatus.Done;
            }

            dataInRead = dataIn.Length;
            dataOutWritten = Math.Min(dataInRead, dataOut.Length);

            dataIn.CopyTo(dataOut);
            dataIn.Seek(0, SeekOrigin.Begin);
            byte[] bs = new byte[dataIn.Length];
            dataIn.Read(bs, 0, bs.Length);
            DataAll.AddRange(bs);

            dataInRead = dataIn.Length;
            dataOutWritten = dataIn.Length;

            return FilterStatus.NeedMoreData;
        }
        catch (Exception ex)
        {
            dataInRead = dataIn.Length;
            dataOutWritten = dataIn.Length;

            return FilterStatus.Done;
        }
    }

    public bool InitFilter()
    {
        return true;
    }

    public void Dispose()
    {

    }
}

public class FilterManager
{
    private static Dictionary<string, IResponseFilter> dataList = new Dictionary<string, IResponseFilter>();

    public static IResponseFilter CreateFilter(string guid)
    {
        lock (dataList)
        {
            var filter = new TestJsonFilter();
            dataList.Add(guid, filter);

            return filter;
        }
    }

    public static IResponseFilter GetFileter(string guid)
    {
        lock (dataList)
        {
            return dataList[guid];
        }
    }
}
我们需要的是
过滤器.dataAll
! 我们可以使用如下方式显示字符串:

ASCIIEncoding encoding = new ASCIIEncoding();
string data = encoding.GetString(filter.DataAll.ToArray());
Console.WriteLine(data);
最后在你的表格中使用它

var wb = new ChromiumWebBrowser("http://www.bilibili.com/video/av8503878/")
         {
            Dock = DockStyle.Fill,
            RequestHandler = new DefaultRequestHandler()
         };
我有一个解决办法。
我正在使用CEF49

我们在一个过滤器中读取它:

public class TestJsonFilter:IResponseFilter
{
    public List<byte> DataAll = new List<byte>();

    public FilterStatus Filter(System.IO.Stream dataIn, out long dataInRead, System.IO.Stream dataOut, out long dataOutWritten)
    {
        try
        {
            if (dataIn == null || dataIn.Length == 0)
            {
                dataInRead = 0;
                dataOutWritten = 0;

                return FilterStatus.Done;
            }

            dataInRead = dataIn.Length;
            dataOutWritten = Math.Min(dataInRead, dataOut.Length);

            dataIn.CopyTo(dataOut);
            dataIn.Seek(0, SeekOrigin.Begin);
            byte[] bs = new byte[dataIn.Length];
            dataIn.Read(bs, 0, bs.Length);
            DataAll.AddRange(bs);

            dataInRead = dataIn.Length;
            dataOutWritten = dataIn.Length;

            return FilterStatus.NeedMoreData;
        }
        catch (Exception ex)
        {
            dataInRead = dataIn.Length;
            dataOutWritten = dataIn.Length;

            return FilterStatus.Done;
        }
    }

    public bool InitFilter()
    {
        return true;
    }

    public void Dispose()
    {

    }
}

public class FilterManager
{
    private static Dictionary<string, IResponseFilter> dataList = new Dictionary<string, IResponseFilter>();

    public static IResponseFilter CreateFilter(string guid)
    {
        lock (dataList)
        {
            var filter = new TestJsonFilter();
            dataList.Add(guid, filter);

            return filter;
        }
    }

    public static IResponseFilter GetFileter(string guid)
    {
        lock (dataList)
        {
            return dataList[guid];
        }
    }
}
我们需要的是
过滤器.dataAll
! 我们可以使用如下方式显示字符串:

ASCIIEncoding encoding = new ASCIIEncoding();
string data = encoding.GetString(filter.DataAll.ToArray());
Console.WriteLine(data);
最后在你的表格中使用它

var wb = new ChromiumWebBrowser("http://www.bilibili.com/video/av8503878/")
         {
            Dock = DockStyle.Fill,
            RequestHandler = new DefaultRequestHandler()
         };