苏飞论坛

标题: 核心更新:Httphelper万能框架新增异步调用方法 [打印本页]

作者: 站长苏飞    时间: 2017-5-18 14:36
标题: 核心更新:Httphelper万能框架新增异步调用方法
核心更新:Httphelper万能框架新增异步调用方法



讨论区http://www.sufeinet.com/forum-169-1.html  

教程:http://httphelper.sufeinet.com/Course.aspx

例子http://httphelper.sufeinet.com/demo.aspx

源码下载http://www.sufeinet.com/thread-9926-1-1.html


购买年费会员,终身VIP,都可直接下载源码,框架购买链接
http://www.sufeinet.com/plugin.php?id=qmx8_buy_usergroup:vip


使用方法如下

   首先要引用命名空间
[C#] 纯文本查看 复制代码
using CsharpHttpHelper.Enum;
using CsharpHttpHelper;


然后以Get本站为例子代码如下

[C#] 纯文本查看 复制代码
            //创建Httphelper对象
            HttpHelper http = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {
                URL = "http://www.sufeinet.com"//URL     必需项   
            };
            //开始异步调用
            http.BeginInvokeGetHtml(item, new ResultHandler(SetHtml));


异步调用所用的方法如下
[C#] 纯文本查看 复制代码
        /// <summary>
        /// 在异步执行完成后要回调的方法
        /// </summary>
        /// <param name="result"></param>
        public void SetHtml(HttpResult result)
        {
            //获取请请求的Html
            string html = result.Html;
            //获取请求的Cookie
            string cookie = result.Cookie;

            //状态码
            HttpStatusCode code = result.StatusCode;
            //状态描述
            string Des = result.StatusDescription;
            if (code == HttpStatusCode.OK)
            {
                //状态为200
            }
        }


完整代码

[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CsharpHttpHelper;
using System.Net;
using System.Text;
using CsharpHttpHelper.Enum;

namespace CsharpHttpHelper_Demo
{
    public partial class HttpGet_Demo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //创建Httphelper对象
            HttpHelper http = new HttpHelper();
            //创建Httphelper参数对象
            HttpItem item = new HttpItem()
            {
                URL = "http://www.sufeinet.com"//URL     必需项   
            };
            //开始异步调用
            http.BeginInvokeGetHtml(item, new ResultHandler(SetHtml));
         
        }
        /// <summary>
        /// 在异步执行完成后要回调的方法
        /// </summary>
        /// <param name="result"></param>
        public void SetHtml(HttpResult result)
        {
            //获取请请求的Html
            string html = result.Html;
            //获取请求的Cookie
            string cookie = result.Cookie;

            //状态码
            HttpStatusCode code = result.StatusCode;
            //状态描述
            string Des = result.StatusDescription;
            if (code == HttpStatusCode.OK)
            {
                //状态为200
            }
        }
    }
}

好了使用方法还是比较简单的,大家赶紧下载使用吧。




作者: 站长苏飞    时间: 2017-5-18 14:53
从此Httphelper也走上了可以回调方法的路,
而不需要每次都 等待执行完成才能继续业务逻辑。

异步调用,说白了就是可以回调方法,不需要等待gethtml方法执行完,可以继续业务逻辑,等执行完成会自动调用你指定的一个方法



作者: MeeSii    时间: 2017-5-18 15:11
不错不错,不过暂时想不到什么地方需要这种异步获取html的。。。
作者: 站长苏飞    时间: 2017-5-18 15:14
MeeSii 发表于 2017-5-18 15:11
不错不错,不过暂时想不到什么地方需要这种异步获取html的。。。

有需求了自然就有用了
作者: 客服~小小    时间: 2017-5-18 15:23
强烈支持楼主ing……
作者: 小哲    时间: 2017-5-18 15:27
太厉害了 支持苏飞框架
作者: sea124    时间: 2017-5-18 16:07
希望老大有时间的时候把 put  delete head 等 http协议请求方法加上,用习惯了httphelper,在用网上的其他代码非常不习惯
作者: 站长苏飞    时间: 2017-5-18 16:13
sea124 发表于 2017-5-18 16:07
希望老大有时间的时候把 put  delete head 等 http协议请求方法加上,用习惯了httphelper,在用网上的其他代 ...

现在是没有限制的你可以直接指定的。 put  delete head 简单的请求都不影响使用,和Post,GET一样的用法
作者: zdking    时间: 2017-5-22 11:01
好东西啊。终于到2.0了。支持一下。
作者: 8400684    时间: 2017-6-11 14:39
强烈支持楼主ing……以前买过的怎么现在一个都下载不了了
作者: chidawu    时间: 2017-7-13 17:48
有没带请求的例子,比如访问百度,完整一套下来怎么写,并不是请求部分,还有信息处理部分的。
作者: 站长苏飞    时间: 2017-7-13 18:06
chidawu 发表于 2017-7-13 17:48
有没带请求的例子,比如访问百度,完整一套下来怎么写,并不是请求部分,还有信息处理部分的。

你这个问题问的,访问我的论坛和访问百度没有什么区别吧,文章里面就有例子,怎么处理这些跟之前完全一样,
作者: sunmooncm    时间: 2017-7-22 22:04
站长苏飞 发表于 2017-5-18 15:14
有需求了自然就有用了

请问如果
foreach (var row in cf.Rows)
{
http.BeginInvokeGetHtml(item, new ResultHandler(SetHtml));
}
SetHtml会排队执行吗?
作者: 站长苏飞    时间: 2017-7-24 08:07
sunmooncm 发表于 2017-7-22 22:04
请问如果
foreach (var row in cf.Rows)
{

不是排队,而是那个先有返回值,先执行那个,
作者: JackFamily    时间: 2018-1-9 10:29
强烈支持楼主ing……
作者: aduudu    时间: 2018-3-29 14:01
登陆界面,需要获取缓存多个数据库表的时候,需要用异步拿到很多张表数据的时候,要使用站长的这个例子,好腻害,刚好借鉴一下~~~~~
作者: Homeless    时间: 2018-5-29 09:52
建议可以增加额外的附属参数
比如在item中写一个参数,在result中可以拿到
这样比如做项目时,第一次访问出错了,想重试一次,可以有个容错处理
作者: 站长苏飞    时间: 2018-5-30 08:49
Homeless 发表于 2018-5-29 09:52
建议可以增加额外的附属参数
比如在item中写一个参数,在result中可以拿到
这样比如做项目时,第一次访问出 ...

item的类本来就是保持不会变的,你只要不重新New一个就不会消失,请求之后一样可以使用。
作者: Homeless    时间: 2018-5-30 10:18
sufeinet 发表于 2018-5-30 08:49
item的类本来就是保持不会变的,你只要不重新New一个就不会消失,请求之后一样可以使用。

我是这样的
初始化一个类
然后类里面有请求
现在用的同步请求,失败了重试一次,失败了再重试一次
但是我看新的异步请求,是在另一个方法中,只能拿到result
这样就无法获取是第几次请求或者其他的信息,只有请求结果可用
作者: 站长苏飞    时间: 2018-5-30 14:37
Homeless 发表于 2018-5-30 10:18
我是这样的
初始化一个类
然后类里面有请求

异步的只能在异步方法中实现,Item参数在我的方法里未提供,你可以选择自行修改,或者等我下个版本更新,我估计会在下个月15号前更新,另外你这边尽量一次性把问题描述完整,你上面其实并没有提到是在异步情况下
作者: 一夜七次    时间: 2019-12-7 11:06
用了一段时间。
这个异步请求特别容易阻塞。用着用着就没法请求了。。不知道有什么办法可以解决?
作者: 站长苏飞    时间: 2019-12-9 12:32
一夜七次 发表于 2019-12-7 11:06
用了一段时间。
这个异步请求特别容易阻塞。用着用着就没法请求了。。不知道有什么办法可以解决?

提示信息是什么
作者: liangqing    时间: 2020-12-28 14:27
6666666
作者: 深度撞擊    时间: 2021-10-23 17:27
复制了例子,异步运行不起来。
作者: 站长苏飞    时间: 2021-10-23 17:34
深度撞擊 发表于 2021-10-23 17:27
复制了例子,异步运行不起来。

有什么提示吗,参数是否能传过去,会不会是在执行方法是出错了。




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4