【问题标题】:Fetching HTML content from Angular4 page with HttpClient from ASP.NET web application使用来自 ASP.NET Web 应用程序的 HttpClient 从 Angular4 页面获取 HTML 内容
【发布时间】:2018-08-05 14:03:40
【问题描述】:

我需要从 angular4 数据网格中获取内容并使用 iframe 集成到另一个网站中显示。我的内容基本上是我想在另一个网站上部分显示的实时 devex 数据网格。

我想做的是从一些外部 URL 解析和调查 HTML 源代码。我正在尝试用 HttpClinet 来做,但做不到。

var httpClient = new HttpClient(); 
HttpRequestMessage request = new HttpRequestMessage(); 
request.Method = new HttpMethod("GET"); 
request.RequestUri = new Uri("http://localhost:62217/ArrivalComponent"); 
var response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseContentRead); 
var contents = await response.Content.ReadAsStringAsync();

无论如何,我只得到此页面的基本 HTML。响应中没有来自角度组件的 HTML。我确定在请求期间组件尚未加载,并且请求是异步的,因此响应被截断。

谁能指导我知道将我的实时数据网格部分显示到另一个站点的最佳方法是什么?

【问题讨论】:

    标签: c# html angular asp.net-web-api


    【解决方案1】:

    HttpClient 不是执行 SPA 的 JavaScript 的浏览器或 HTML 处理器,HttpClient 只是一个发出 HTTP 请求并检索答案的组件,在本例中是一个纯 HTML。

    检索数据网格的基本步骤是

    • 下载 HTML 页面(您已经完成的步骤)
    • 确定执行 Angular 组件所需的额外资源(假设主要是 JavaScript)
    • 下载其他资源
    • 在 HTML 中执行 JavaScript 以填充表格(可能使用 JavaScript.NET)

    无论如何,我不知道 Angular 使用 JS.Net 的难易程度。此外,您似乎缺乏 HTML、JS 和 SPA 工作原理的概念,这可能会使整个事情变得更加复杂。

    另一种选择可能是使用像CefSharp(尤其是CefSharp.OffScreen)这样的组件来执行页面及其所有JS,并以某种方式从CefSharp 检索生成的DOM。不幸的是,您似乎不能简单地从 C# 获取 DOM,而必须使用 JavaScript 桥(请参阅here)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多