从 C# 中的动态网站检索 AJAX (XHR) 信息
Retrieve AJAX (XHR) infos from a dynamic website in C#
我正在尝试使用 C# 创建一个应用程序以从我的 ISP 站点检索我的数据上限信息。该页面是 this one,但我怀疑无法从他们的网络外部访问它,因此如果有人需要更多信息,请询问。
页面加载通过AJAX剩余流量配额,加载完成后显示在页面中。现在我已经有一个使用 HtmlAgilityPack 的工作应用程序,但考虑到我正在使用 WebBrowser 控件在后台加载页面,等待五秒钟,用库解析页面的 HTML 并查看它是否找到它,它非常可怕必要的 HTML 字符串;如果不是,计时器将重置并重复自身,直到 javascript 完成它的工作并加载数据上限信息。
我想以某种方式复制网页的功能并调用服务器并直接请求信息,而无需在后台创建网络浏览器实例并等待信息加载。
可能吗?
Headers
Host: internet.tre.it
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Accept: application/json, text/javascript, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://internet.tre.it/
X-Requested-With: XMLHttpRequest
DNT: 1
Connection: keep-alive
Cookie: cookiesAccepted=1; _iub_cs-160673=%7B%22id%22%3A160673%2C%22consent%22%3Atrue%2C%22timestamp%22%3A%222018-04-16T15%3A42%3A10.978Z%22%2C%22version%22%3A%220.13.22%22%7D; ASP.NET_SessionId=n2wz2brfaepfj2klo0nqfwaw; pageVisit=c73074b54dbe40d49a715aeb9a0f4ea8; 148162__148162_d32646f682e342dba303540b0f10dac1=1
回应
Album of the JSON response.(我把这两行涂黑了,因为它们分别是我自己的名字和我的phone号码)
响应是一个 json 字符串,我推荐如下:
- 编写代码从 URL 下载 json 字符串。参见实例
- 从您的 F12 响应选项卡复制整个 json 字符串
- 在 Visual Studio 中创建一个新的 class 文件
- 单击“编辑”>“选择性粘贴”>“将 Json 粘贴为 classes.
- 在您的代码中,您需要粘贴第一个 class 的名称。它是父级 class。我会说它是 'Banners',但请验证。
var obj = JsonConvert.DeserializeObject < Banners>(downloadedJson);
- 现在您可以遍历菜单数组来提取您需要的所有信息。
大功告成!如果所有信息都在 json 中,则无需使用 HtmlAgilityPack。让我知道你过得怎么样。
我正在尝试使用 C# 创建一个应用程序以从我的 ISP 站点检索我的数据上限信息。该页面是 this one,但我怀疑无法从他们的网络外部访问它,因此如果有人需要更多信息,请询问。
页面加载通过AJAX剩余流量配额,加载完成后显示在页面中。现在我已经有一个使用 HtmlAgilityPack 的工作应用程序,但考虑到我正在使用 WebBrowser 控件在后台加载页面,等待五秒钟,用库解析页面的 HTML 并查看它是否找到它,它非常可怕必要的 HTML 字符串;如果不是,计时器将重置并重复自身,直到 javascript 完成它的工作并加载数据上限信息。
我想以某种方式复制网页的功能并调用服务器并直接请求信息,而无需在后台创建网络浏览器实例并等待信息加载。
可能吗?
Headers
Host: internet.tre.it
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Accept: application/json, text/javascript, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://internet.tre.it/
X-Requested-With: XMLHttpRequest
DNT: 1
Connection: keep-alive
Cookie: cookiesAccepted=1; _iub_cs-160673=%7B%22id%22%3A160673%2C%22consent%22%3Atrue%2C%22timestamp%22%3A%222018-04-16T15%3A42%3A10.978Z%22%2C%22version%22%3A%220.13.22%22%7D; ASP.NET_SessionId=n2wz2brfaepfj2klo0nqfwaw; pageVisit=c73074b54dbe40d49a715aeb9a0f4ea8; 148162__148162_d32646f682e342dba303540b0f10dac1=1
回应
Album of the JSON response.(我把这两行涂黑了,因为它们分别是我自己的名字和我的phone号码)
响应是一个 json 字符串,我推荐如下:
- 编写代码从 URL 下载 json 字符串。参见实例
- 从您的 F12 响应选项卡复制整个 json 字符串
- 在 Visual Studio 中创建一个新的 class 文件
- 单击“编辑”>“选择性粘贴”>“将 Json 粘贴为 classes.
- 在您的代码中,您需要粘贴第一个 class 的名称。它是父级 class。我会说它是 'Banners',但请验证。
var obj = JsonConvert.DeserializeObject < Banners>(downloadedJson);
- 现在您可以遍历菜单数组来提取您需要的所有信息。
大功告成!如果所有信息都在 json 中,则无需使用 HtmlAgilityPack。让我知道你过得怎么样。