http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 16843|回复: 21

[HttpHelper] 求助!HttpHelperGET失败

[复制链接]
发表于 2014-10-11 14:45:06 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 zhty2014 于 2014-10-11 14:44 编辑

如题,我先使用HttpWebRequest方式获取数据的,多次获取后出现服务器无法访问,改用HttpHelper,但发现多次GET后发现还是最后一次GET报错。下面是代码,请大神指点。
[C#] 纯文本查看 复制代码
 string username = textBox1.Text.Trim();// username= yuansh72
            string password = textBox2.Text.Trim(); //password= yuan8050
         CookieCollection DLCookies = new CookieCollection();
         HttpHelper http = new HttpHelper();
         HttpResult result = new HttpResult(); 
         HttpItem item = new HttpItem()         //登陆Post
            {
                URL = "https://learning.sinopec.com/pkmslogin.form",
                Method = "POST",
                Referer = "https://learning.sinopec.com/",
                ContentType = "application/x-www-form-urlencoded",
                Postdata = string.Format("action=1200&srcreq=1001&site=sinopec&username=" + username + "&password=" + password + "&login-form-type=pwd"),
                ResultCookieType = ResultCookieType.CookieCollection  
            };
            result = http.GetHtml(item);                   
            foreach (Cookie cc in result.CookieCollection) //将cookie设置为浏览的cookie  
                {                             
                InternetSetCookie(

                     "http://",

                     cc.Name.ToString(),

                     cc.Value.ToString() + ";expires=+ DateTime.Now.AddDays(1).ToString()");
                DLCookies.Add(cc);
                 }
            //====================================POST成功
            item = new HttpItem()
              {
                  URL = "https://learning.sinopec.com/ilearn/en/cst_admin/jsp/userlogin.jsp",
                  Encoding = System.Text.Encoding.GetEncoding("utf-8"),
                  CookieCollection = DLCookies,               
                  ContentType = "application/x-www-form-urlencoded",
                  Allowautoredirect = true,
                  ResultCookieType = ResultCookieType.CookieCollection
              };
                  result = http.GetHtml(item);
           foreach (Cookie ccc in result.CookieCollection) //将cookie设置为浏览的cookie  
                {
               DLCookies.Add(ccc);
                }      
            ////===================================登录成功
          item = new HttpItem()
             {
                URL = "https://learning.sinopec.com/ilearn/en/userhome/jsp/userhome_new.jsp",
                Encoding = System.Text.Encoding.GetEncoding("utf-8"), 
                CookieCollection = DLCookies,
                ContentType = "application/x-www-form-urlencoded",
                Allowautoredirect = true,
                ResultCookieType = ResultCookieType.CookieCollection
              };
                 result = http.GetHtml(item);   
             ////==========================================页面跳转成功
             ///===========================================
                 string text = "my_course.jsp?";
                 string ass = ";";
                 string ShiPinShu = Between(result.Html, text, ass);
                 string Shu = ShiPinShu.Substring(0, ShiPinShu.Length - 1);
                 long s = long.Parse(Shu);
             ///===========================================以上是取出要打开连接的尾数
            item = new HttpItem()
                 {
                     URL = "http://learning.sinopec.com/ilearn/en/userhome/jsp/my_course_new.jsp?" + s,                                 
                     Encoding = System.Text.Encoding.GetEncoding("utf-8"), 
                     CookieCollection = DLCookies,//把Cookie写入请求串中 
                     ContentType = "application/x-www-form-urlencoded",
                     //Allowautoredirect = true, 
                     ResultCookieType = ResultCookieType.CookieCollection
                 };
                    result  = http.GetHtml(item);
            //////=============================================GET失败
                    richTextBox1.Text = result.Html;  
是不是最后那个URL不对?该怎么写呢,请大神指点

最佳答案

查看完整内容

帮你写了个,没什么难度啊。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-10-11 14:45:07 | 显示全部楼层
zhty2014 发表于 2014-10-12 15:36
就是这个网址"http://learning.sinopec.com/ilearn/en/userhome/jsp/my_course_new.jsp?" +s的内容

帮你写了个,没什么难度啊。
Learning.rar (83.96 KB, 下载次数: 13)
回复

使用道具 举报

发表于 2014-10-11 15:10:28 | 显示全部楼层
想帮你但无法下手啊。
回复

使用道具 举报

 楼主| 发表于 2014-10-11 15:13:25 | 显示全部楼层
cload 发表于 2014-10-11 15:10
想帮你但无法下手啊。

额,,无法下手是什么意思?我是初学者,是不是哪里写的不对?
回复

使用道具 举报

发表于 2014-10-11 16:16:25 | 显示全部楼层
页面跳转成功后,Cookie发生变化了吗?跳转成功后的Cookie你没有再记录。看下有没有可能是这的原因。
回复

使用道具 举报

 楼主| 发表于 2014-10-11 16:44:42 | 显示全部楼层
水手 发表于 2014-10-11 16:16
页面跳转成功后,Cookie发生变化了吗?跳转成功后的Cookie你没有再记录。看下有没有可能是这的原因。

我刚刚查了下,登录成功后有2个COOKIE,跳转后一个COOKIE  都没变化,都已经记录了,不知道错处在哪。。能帮我再看看吗?
回复

使用道具 举报

发表于 2014-10-11 16:54:42 | 显示全部楼层
代码没什么问题。就是Cookie,包括最后一次GET的参数你都验证了吗?抓包看下参数是否正确。传递的参数计算方法是对的吗?
回复

使用道具 举报

发表于 2014-10-11 18:23:02 | 显示全部楼层
你的网站或许是内网。没办法帮你。
回复

使用道具 举报

 楼主| 发表于 2014-10-12 10:12:25 来自移动端 | 显示全部楼层
cload 发表于 2014-10-11 18:23
你的网站或许是内网。没办法帮你。

这个是外网啊,能帮忙看看吗
回复

使用道具 举报

 楼主| 发表于 2014-10-12 10:37:59 来自移动端 | 显示全部楼层
我是真的找不到哪里出错了,哪位大神看到帮帮忙吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-2 00:20

© 2014-2021

快速回复 返回顶部 返回列表