【发布时间】:2018-08-11 20:41:49
【问题描述】:
注意:我为此使用CefSharp 浏览器。
目标
我正在尝试从 XMLHttpRequest 读取每个 JSON 响应。
我尝试过的
public class RequestHandler : IRequestHandler
{
public void OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request,
IResponse response, UrlRequestStatus status, long receivedContentLength)
{
if (request.Headers["X-Requested-With"] == "XMLHttpRequest" &&
response.ResponseHeaders["Content-Type"] == "application/json")
{
var resourceHandler = new ResourceHandler();
long responseLength;
string redirectUrl;
var stream = resourceHandler.GetResponse(response, out responseLength, out redirectUrl);
using (var streamReader = new StreamReader(stream))
{
var responseContent = streamReader.ReadToEnd();
Console.WriteLine(responseContent);
}
}
}
public IResponseFilter GetResourceResponseFilter(IWebBrowser browserControl, IBrowser browser, IFrame frame,
IRequest request, IResponse response)
{
return null;
}
public bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request,
bool isRedirect)
{
return false;
}
public bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl,
WindowOpenDisposition targetDisposition, bool userGesture)
{
return false;
}
public bool OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode,
string requestUrl,
ISslInfo sslInfo, IRequestCallback callback)
{
return false;
}
public void OnPluginCrashed(IWebBrowser browserControl, IBrowser browser, string pluginPath)
{
}
public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame,
IRequest request,
IRequestCallback callback)
{
return CefReturnValue.Continue;
}
public bool GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy,
string host, int port,
string realm, string scheme, IAuthCallback callback)
{
return false;
}
public void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status)
{
}
public bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, string originUrl, long newSize,
IRequestCallback callback)
{
return false;
}
public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request,
ref string newUrl)
{
}
public bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, string url)
{
return false;
}
public void OnRenderViewReady(IWebBrowser browserControl, IBrowser browser)
{
}
public bool OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request,
IResponse response)
{
return false;
}
}
问题
我无法读取 JSON 响应,因为 stream 为空。
问题
如何从 XMLHttpRequest 读取 JSON 响应内容?
我在这方面非常缺乏经验。所以,如果我遗漏了任何有用的信息:请告诉我,我会提供。
【问题讨论】:
标签: c# winforms xmlhttprequest cefsharp