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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 4094|回复: 5

[反馈建议] 建议增加:对get和post最简操作的函数。

[复制链接]
发表于 2015-5-17 08:38:38 | 显示全部楼层 |阅读模式
我们在使用get和post的大多数情况,就只是提交一个数据,其余的全默认就行。大家操作也是简单了还想再简单,越简单越好。所以建议增加一个最简get和post的方式。比如访问的时候,CHttpWeb h=new CHttpWeb();   //new一个类之后,用这个new出来的ChttpWeb类h访问,cookie全保存在这个h类中,所有用h访问的cookie都是保存在h中。如果要另行登陆其他网站,就再new一个CHttpWeb()类。
h. HttpSendData("http://www.sufeinet.com");  //发送一个get 只需要这样就完事了。多简单。
h.httpSendData("","post" ,"a=123&c=456&d=789");     //a=123&c=456&d=789为Post要发送的数据,假如这个是登陆,那么登陆之后的cookie仍然保存在h类中,下次直接用h发get是保持在登陆状态的。不需要传cookie。





功能实现代码:
   public class CHttpWeb
    {

            //创建Httphelper对象
            HttpHelper http = new HttpHelper();
                        private  string _cookie = "";
                        private string _ResponseUri = "";
                   private  String _ContentType = "application/x-www-form-urlencoded";
                        public string HttpSendData(string _URL, string _Method = "get", string _Data = "")
        {
           //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {
                URL = _URL,//URL     必需项   
                                Cookie =_cookie,
                Method = _Method,//URL     可选项 默认为Get   
                ContentType =_ContentType,//返回类型    可选项有默认值
                PostDataType = PostDataType.String,//默认为字符串,同时支持Byte和文件方法
                PostEncoding = System.Text.Encoding.UTF8,//默认为Default,
                Postdata = _Data,//Post要发送的数据

                Allowautoredirect=true,//自动跳转
                AutoRedirectCookie=true//是否自动处理Cookie
            };
          //请求的返回值对象
            HttpResult result = http.GetHtml(item);
            //获取请请求的Html
            string html = result.Html;
            //获取请求的Cookie
             cookie = result.Cookie;
            //获取URL重定向时最后一次访问的URL
             ResponseUri = result.ResponseUri;
                     return html;
                }
    }
}





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2015-5-17 08:39:12 | 显示全部楼层
另外问一下,怎么发代码能让他以代码方式显示,找了半天没找到。
发表于 2015-5-17 08:55:35 | 显示全部楼层
liqingboyou 发表于 2015-5-17 08:39
另外问一下,怎么发代码能让他以代码方式显示,找了半天没找到。

看这里http://www.sufeinet.com/thread-1942-1-1.html
发表于 2015-5-17 08:59:02 | 显示全部楼层
只要定义了固定的方法就有了局限性,我这里只你不配置全部是安Http协议的默认值 的,比如Get
[C#] 纯文本查看 复制代码
 HttpHelper http = new HttpHelper();  
    HttpItem item = new HttpItem() { URL = "http://www.sufeinet.com"};  
    HttpResult result = http.GetHtml(item);  
    string html = result.Html;  
    string cookie = result.Cookie;  
 

只需要这样就行了,
Post也很简单
[C#] 纯文本查看 复制代码
 HttpHelper http = new HttpHelper(); 
HttpItem item = new HttpItem()
{
 URL = "http://www.sufeinet.com",
 Method = "post",
 Postdata = "username=sufei&pwd=sufeinet.com"
}; 
HttpResult result = http.GetHtml(item); 
string html = result.Html; 
string cookie = result.Cookie; 
 

这样已经够简单了吧,我走的是对象法,不能倒退到重载方法的方式,这点希望理解吧。

 楼主| 发表于 2015-5-17 09:13:00 | 显示全部楼层
站长苏飞 发表于 2015-5-17 08:59
只要定义了固定的方法就有了局限性,我这里只你不配置全部是安Http协议的默认值 的,比如Get
[mw_shl_code ...

①嗯,好吧。不过人总是想简单了再简单,越简单越好,我建议是并不修改原有任何方法,只是再单独增加一个快捷操作。您觉得呢,仅供建议。如果觉得没必要就算了。
②、关于保存上次访问cookie问题,访问同一网站经常需要cookie连续保存,也就是使用上次访问返回的cookie即可。是不是每次访问的时候都要在HttpItem类中cookie,不能默认使用上次访问时用的吗?
发表于 2015-5-17 09:19:12 | 显示全部楼层
liqingboyou 发表于 2015-5-17 09:13
①嗯,好吧。不过人总是想简单了再简单,越简单越好,我建议是并不修改原有任何方法,只是再单独增加一个 ...

这个不能默认吧,写一个框架是要安协议要求来的,不能根据特定需求,这样就不通用了,如果不需要的用户呢,是不是要麻烦的来回配置呢。反过来想一下是一样的。编码也是一样的,从最底级的语言向高级的面向对象发展,相信不会再回到原点的。
就算是我累加了,使用了上次的,也不一定是对的,因为有些Cookie是要JS生成,或者写算法,或者是几个请求组合的,而这些都是特定的需求,每个网站情况不样,通用实在是有点难为我了。

这就是一个类,不能集成的太多,那样会慢慢的成为了一个大杂烩的。也就失去了方向。
有兴趣的话,可以自己写点扩展出来,毕竟我开放的是源码,完全可以自己随意改造,呵呵
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-12-23 00:29

© 2014-2021

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