hanjiangying 2019-02-08 11:25 采纳率: 100%
浏览 1093
已采纳

HttpWebRequest用GET方式请求数据时,总是提示无权访问该页面

写了一个客户端软件向某个网站页面发起查询请求并获取返回的JSON数据,函数代码如下:

public string doGetRequest(string cookie, string url)
        {
            Uri uri = new Uri(url);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            request.Method = "GET";
            request.AllowAutoRedirect = false;
            request.Accept = "application/json";
            request.ContentType = "application/x-www-form-urlencoded";
            request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0";
            if (cookie.Length > 0)
            {
                request.Headers.Add("Cookie", cookie);
            }
            HttpWebResponse response;
            try
            {
                response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
                response = (HttpWebResponse)ex.Response;
                StreamReader sr = new StreamReader(response.GetResponseStream());
                MessageBox.Show(sr.ReadToEnd());
            }
            if (response.StatusCode != HttpStatusCode.OK)
            {
                MessageBox.Show("服务器返回请求错误!");
                return "";
            }
            string encoding = response.ContentEncoding;
            if (encoding == null || encoding.Length < 1)
            {
                encoding = "UTF-8"; //默认编码
            }
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
            string result = reader.ReadToEnd();
            //释放资源
            response.Close();
            reader.Close();
            return result;
        }

调用该函数时传入事先获取的cookie和请求url,url的值如下(网站域名用*省略):
http://*********/tcatsds/tcaTsdApprover/searchAllTcatsd?APPLYNO=P20190098290

可是程序总是报错,说GetResponse返回502错误,查看返回的详细信息如下:
图片说明

从返回的详细信息上看是无权访问该页面,但是我如果在浏览器中直接输入该url,是能看到返回的JSON数据的,实在想不通为什么,哪位大神能指导一下该怎么办?

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-02-08 11:37
    关注

    和fiddler或者浏览器抓包的数据精确对比,特别是你的cookie,你说是“事先获取”,这个就不对,你看下你浏览器访问这个网站,把浏览器关掉再开,这个cookie会变化么?

    如果会变化,说明你必须通过访问网站返回的set-cookie设置你的cookie,而不能固定不变。特别需要登录的网站。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于温度改变石墨烯介电性能(关键词-介电常数)
  • ¥150 HDMI分路器LT86102 的输出在890MHz频点处EMC超标8DB
  • ¥15 druid(相关搜索:数据库|防火墙)
  • ¥15 大一python作业
  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥60 如何鉴定微信小程序数据被篡改过
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥20 手机截图相片分辨率降低一半