【问题标题】:HttpWebResponse returns only one element of the pageHttpWebResponse 只返回页面的一个元素
【发布时间】:2014-04-28 06:29:19
【问题描述】:

您好,我做了一个简单的 httpwebrequest,然后我读取(StreamReader)响应,只想获取网站的 html 页面,但我在浏览器中只得到一个标签(页面的一个元素)一切都很好(我查看所有页面)但是当我尝试将 cookie 设置为拒绝\禁用时,我也在浏览器中获取此标签(只有页面的一个元素)并且一切都消失了。如果在我之后我会得到意见在浏览器中禁用 cookie 我得到相同的页面(如代码中),这意味着我的 HttpWebRequest 设置为 cookies=deny/disable。

您可以转到https://www.bbvanetcash.com/local_kyop/KYOPSolicitarCredenciales.html 并使用 F12 禁用 cookie,您将看到差异以及带有一个标签的此页面。

看看我的代码有什么想法我需要在这里更改吗?

HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("https://www.bbvanetcash.com/local_kyop/KYOPSolicitarCredenciales.html");

HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
Stream streamResponseLogin = myHttpWebResponse.GetResponseStream();
StreamReader streamReadLogin = new StreamReader(streamResponseLogin);
LoginInfo = streamReadLogin.ReadToEnd();

【问题讨论】:

    标签: c# html asp.net httpwebrequest httpwebresponse


    【解决方案1】:

    您的代码正在接收完整的页面内容,但它无法接收动态内容。发生这种情况是因为您尝试访问的页面依赖 Cookie 来维护会话以及 JavaScript(它使用 jQuery)来加载动态内容并提供丰富的用户体验。

    要成功接收整个页面,您的代码必须

    • 支持跨各种HttpRequestHttpResponse 检索、存储和发送cookie 对象。
    • 能够执行 JavaScript 代码来加载页面的动态内容/标记

    要测试“您的代码是否接收到正确的值”,请访问网站 Web Sniffer 并将您的 URL 放在那里。

    正如您可以在 web-sniffer 站点上尝试的那样,对于 www.google.com,您得到的响应是重定向指令......这意味着,即使要访问 Google 的主页,您的代码也必须了解 HTTP 状态消息(302 那里)。

    【讨论】:

    • @VovaPotapov:编写这些功能将制作一个基本的浏览器。我没有任何这样的代码。每个功能都非常庞大,例如处理所有 HTTP 状态消息,每个消息都有不同的属性。解释和执行 JavaScript 代码;维护和存储 cookie、GET 和 POST 处理、在 UI 上呈现内容、CSS 处理等等……
    猜你喜欢
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-08
    • 2016-10-21
    相关资源
    最近更新 更多