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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 4665|回复: 3

[求助] 极速请求方法FastRequest(极速请求不接收数据)BUG报告

[复制链接]
发表于 2014-12-2 06:39:44 | 显示全部楼层 |阅读模式
FastRequest请求中,未处理请求超时,超时时会报错,请问这种情况应该如何修改?


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2014-12-2 08:09:39 | 显示全部楼层
处理的有异常啊,怎么会没有处理呢,都是统一的方法,你说再具体点你的问题,我看看是什么原因
 楼主| 发表于 2014-12-2 19:41:31 | 显示全部楼层
站长苏飞 发表于 2014-12-2 08:09
处理的有异常啊,怎么会没有处理呢,都是统一的方法,你说再具体点你的问题,我看看是什么原因

private void t()
        {
            //创建Httphelper对象
            HttpHelper http = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {
                URL = "http://www.baidu.com",//URL     必需项   
                Method = "get",//URL     可选项 默认为Get   
                ContentType = "text/html",//返回类型    可选项有默认值   
                //ContentType = "application/x-www-form-urlencoded",//返回类型    可选项有默认值
            };
            //请求的返回值对象
            HttpResult result = new HttpResult();


            Func<HttpItem, HttpResult> func = http.FastRequest;
            func.BeginInvoke(item, CallViaDelegateCallback, result);
        }

        private void CallViaDelegateCallback(IAsyncResult ar)
        {
            //string str = (string)ar.AsyncState;
            Func<HttpItem, HttpResult> func
                        = (ar as AsyncResult).AsyncDelegate as Func<HttpItem, HttpResult>;
            try
            {
                // 如果有异常,会在这里被重新抛出。
                HttpResult result = func.EndInvoke(ar);
                //状态码
                HttpStatusCode code = result.StatusCode;
                //状态描述
                string Des = result.StatusDescription;
                if (code == HttpStatusCode.OK)
                {
                    int num = Convert.ToInt32(toolStripStatusLabel1.Text) + 1;
                    toolStripStatusLabel1.Text = num.ToString();
                }
               
            }
            catch (Exception ex)
            {
               
            }
        }



然后多循环几次!
private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 10000; i++)
            {
                t();
            }
        }


这时候 就会因为没有处理超时  而异常退出
发表于 2014-12-2 20:14:58 | 显示全部楼层
这个方法里同不可能有异常报出的,你说的超时更不可能,
我的框架是源码,你可以看的
[C#] 纯文本查看 复制代码
   /// <summary>
        /// 快速Post数据这个访求与GetHtml一样,只是不接收返回数据,只做提交。
        /// </summary>
        /// <param name="item">参数类对象</param>
        /// <returns>返回HttpResult类型</returns>
        internal HttpResult FastRequest(HttpItem item)
        {
            //返回参数
            HttpResult result = new HttpResult();
            try
            {
                //准备参数
                SetRequest(item);
            }
            catch (Exception ex)
            {
                //配置参数时出错
                return new HttpResult() { Cookie = string.Empty, Header = null, Html = ex.Message, StatusDescription = "配置参数时出错:" + ex.Message };
            }
            try
            {
                //请求数据
                using (response = (HttpWebResponse)request.GetResponse())
                {
                    //成功 不做处理只回成功状态
                    return new HttpResult() { Cookie = string.Empty, Header = null, StatusCode = response.StatusCode, StatusDescription = response.StatusDescription };
                }
            }
            catch (WebException ex)
            {
                using (response = (HttpWebResponse)ex.Response)
                {
                    //不做处理只回成功状态
                    return new HttpResult() { Cookie = string.Empty, Header = null, StatusCode = response.StatusCode, StatusDescription = response.StatusDescription };
                }
            }
            catch (Exception ex)
            {
                result.Html = ex.Message;
            }
            if (item.IsToLower) result.Html = result.Html.ToLower();
            return result;
        }

你自己看看源码,怎么可能会报异常,全部都有异常处理的。

这样吧,咱们也不争执了,我说没有是因为我的代码在这里放着,而且我也一直在用,没有出现过这种情况。

如果你感觉是我这里有问题,你就捕获一下异常我看看,

其实很简单的道理,在try
{
}catch

里的代码都不会向外抛出异常,这是C#的基础语法,除非C#本身有问题

那你说有,但是你得让我们看到证据吧,

你的代码异常退出也不一定就是我这部分报的异常吧。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-15 15:22

© 2014-2021

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