【问题标题】:Receiving a web page after HttpWebRequest "POST"在 HttpWebRequest "POST" 之后接收网页
【发布时间】:2015-05-12 17:31:08
【问题描述】:

我正在执行以下 HttpWebRequest:

      private static void InvokeHealthCheckApi()
    {
        var webRequest = (HttpWebRequest)WebRequest.Create(Url);
        string sb = JsonConvert.SerializeObject(webRequest);
        webRequest.Method = "GET";
        webRequest.KeepAlive = true;
        webRequest.AllowAutoRedirect = true;
        webRequest.ContentType = "application/json";
        webRequest.UserAgent =
            "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36";
        webRequest.CookieContainer = cookieJar;

        using (HttpWebResponse response = webRequest.GetResponse() as HttpWebResponse)

        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
        {

            File.AppendAllText("C:\\httpResponse1.txt", response.Headers.ToString());
            File.AppendAllText("C:\\httpResponse2.html", reader.ReadToEnd());

        }


    }

请求的响应以网页形式返回,内容如下: “脚本已禁用。单击提交继续。” (提交按钮)

点击提交按钮后,我得到一个提示,内容如下: "您要从 fr74a87d9.work.corp.net 打开还是保存 healthcheck.json(297 字节)?

单击“打开”按钮后,我收到了我希望收到的 json 数据。

我的问题是如何解析响应以获取我需要的 json 数据?获取网页作为初始响应并且必须深入获取 json 响应是否正常? StreamReader 无法解析响应,因为它是网页而不是 json 数据。

【问题讨论】:

  • 无论您访问什么网站,都期望您完成与您在请求中所做的事情不同的事情。当您进行抓取时,您必须在浏览器中准确复制发送给客户端服务器的内容。
  • 感谢马克的回复。我不确定我没有在网站期望的代码中复制什么。以下是我的代码正在执行的步骤:
  • 1) HttpWebRequest "GET" 获取网页和相关的cookie信息。 2) 填充网页 formData (password, userid) 3) HttpWebRequest "POST" 到登录页面 4) 现在我已经登录了,我在 Web API 控制器 url 上执行 GET

标签: c# json httpwebrequest httpwebresponse


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 2012-02-12
    • 2017-11-22
    • 1970-01-01
    相关资源
    最近更新 更多