C# 如何从XMLHttpRequest读取JSON响应内容?
注意:我正在使用浏览器进行此操作。 目标 我试图从XMLHttpRequest读取每个JSON响应 我试过的 问题 我无法读取JSON响应,因为流为空 问题: 如何从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
我正在使用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()
};