`
xmllong
  • 浏览: 12570 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

NET实现Wap飞信协议

 
阅读更多


NET实现Wap飞信协议

09年的时候,我用C#实现了简单的飞信协议,并开了源,详情请查看这里。直到现在还有童鞋发邮件给我向咨询或是所要代码。但是由于飞信协议有个几次的升级,我那个库基本上没什么用了。由于工作比较忙,也一直没有去管他。前两天,我用这个项目申请了sinaapp的中级开发者人证,居然侥幸通过了,所以觉得有必要更新一下代码了。

网上查了一下有关飞信协议的最新的情况,没有什么进展,我也不想自己通过抓包去分析飞信协议了,毕竟那样会比较耗时。正当我准备放弃的时候发现有人用php实现了wap飞信的协议。不看不知道,一看吓一跳,协议非常简单,总共代码也不超过100行。

我花了一小段时间,将那php的代码翻译成了C#的,测试了一下,还挺好用的,速度也挺快的。

下面是具体的代码实现,看看非常简单,占内存和CPU肯定也会非常的少。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Web;
using System.Text.RegularExpressions;
 
namespace Fetion
{
    public class WapFetion
    {
        private static string server = "http://f.10086.cn";
        private string mobile;
        private string password;
        private CookieContainer cookies = new CookieContainer();
 
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="mobile">手机号码</param>
        /// <param name="password">密码</param>
        public WapFetion(string mobile, string password)
        {
            this.mobile = mobile;
            this.password = password.ToUrlEncode();
        }
 
        protected string PostWithCookie(string uri, string data)
        {
            using (HttpWebClient hwc = new HttpWebClient(cookies))
            {
                hwc.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
                return Encoding.UTF8.GetString(hwc.UploadData(uri, Encoding.UTF8.GetBytes(data)));
            }
        }
 
        protected string GetUid(string mobile)
        {
            string uri = server + "/im/index/searchOtherInfoList.action";
            string data = "searchText=" + mobile;
 
            string result = PostWithCookie(uri, data);
            Match mc = Regex.Match(result, @"toinputMsg\.action\?touserid=(\d+)");
            if (mc.Success)
            {
                return mc.Result("$1");
            }
            return null;
        }
 
        protected bool ToUid(string uid, string message)
        {
            string uri = server + "/im/chat/sendMsg.action?touserid=" + uid;
            string data = "msg=" + message.ToUrlEncode();
            string result = PostWithCookie(uri, data);
            return result != null &amp;&amp; result.Contains("发送消息成功!");
        }
 
        protected bool ToMyself(string message)
        {
            string uri = server + "/im/user/sendMsgToMyselfs.action";
            string data = "msg=" + message.ToUrlEncode();
            string result = PostWithCookie(uri, data);
            return  result != null &amp;&amp; result.Contains("短信发送成功!");
        }
 
        /// <summary>
        /// 登陆
        /// </summary>
        /// <returns></returns>
        public string Login()
        {
            string uri = server + "/im/login/inputpasssubmit1.action";
            return PostWithCookie(uri, string.Format("m={0}&amp;pass={1}&amp;loginstatus=1", mobile, password));
        }
 
        /// <summary>
        /// 注销
        /// </summary>
        /// <returns></returns>
        public string Logout()
        {
            string uri = server + "/im/index/logoutsubmit.action";
            return PostWithCookie(uri, "");
        }
 
        /// <summary>
        /// 通过手机号,给自己会好友发送消息
        /// </summary>
        /// <param name="mobile">手机号</param>
        /// <param name="message">消息</param>
        /// <returns></returns>
        public bool Send(string mobile, string message)
        {
            if (string.IsNullOrWhiteSpace(message))
            {
                return false;
            }
 
            if (mobile == this.mobile)
            {
                return ToMyself(message);
            }
            else
            {
                string uid = GetUid(mobile);
                if (uid == null)
                {
                    return false;
                }
                return ToUid(uid, message);
            }
        }
    }
}

从上面可以看出,这个代码是相当的简单,用到了一个HttpWebClient,其实就是对WebClient的简单的封装,实现了Cookie的传递。

整个工程的代码:WapFetion.NET

参考的php程序:phpfetion_v1.2.1.zip

 

分享到:
评论

相关推荐

    Wap飞信源码,在线飞信源码,PHP网页飞信源码

    首先,我们要理解“Wap飞信”是指通过WAP(无线应用协议)技术,使得移动设备用户能够通过手机浏览器访问飞信服务。这种技术在2G和3G时代非常流行,因为那时智能手机并不普遍,而WAP是移动用户接入互联网的主要方式...

    sdf.rar_wap_飞信_飞信 asp

    标题 "sdf.rar_wap_飞信_飞信 asp" 暗示这是一个与WAP版飞信相关的压缩包,包含的是飞信ASP源代码,可能是为了在WAP(无线应用协议)环境下运行飞信服务。WAP是用于移动设备访问互联网的一种技术,它允许用户通过...

    wap push协议权威文档说明

    3. **实现指南**:提供具体的实施建议和技术指导,帮助开发者更好地理解并应用SI协议。 4. **示例与案例**:通过实际例子展示SI协议的应用场景,加深理解。 5. **附录与参考文献**:列出相关标准、文档以及参考材料...

    WAP无线应用协议 WAP无线应用协议

    **WAP无线应用协议** WAP(Wireless Application Protocol)无线应用协议是一种为移动设备如手机、PDA等设计的开放标准,它使得用户可以通过移动通信网络访问互联网内容和服务。WAP协议栈是构建在无线通信网络之上...

    wap 2.0 完整协议文档

    WAP协议栈是实现WAP服务的基础,包括以下层次: 1. **无线应用环境 (WAE) 层**:这一层包括WML和XHTML解析器,以及WAP浏览器。它负责处理用户与应用的交互。 2. **无线传输层 (WTP) 和无线交易传输层 (WDP) **:这...

    wap push协议权威文档说明(SL)

    这份文档详细规定了SL协议的实现细节和技术规范,包括但不限于: - **版权信息**:文档明确指出所有权利归Wireless Application Protocol Forum所有,并提供了使用条款链接。 - **文档用途限制**:仅限于内部或教育...

    wap_push协议

    **wap_push协议** WAP(Wireless Application Protocol)推送协议,简称WAP_Push,是无线应用协议中的一种,主要用于将信息从服务器端推送到移动设备上,无需用户主动请求。这种服务允许运营商或者内容提供商将新闻...

    WAP 无线应用协议 3

    WAP 无线应用协议 WAP 无线应用协议 WAP 无线应用协议

    wap协议 wap和web的区别 ppt

    **WAP协议详解** WAP(Wireless Application Protocol)是一种专为无线通信设备设计的协议,旨在让移动用户可以通过手机或其他手持设备访问互联网内容。WAP协议的核心目标是创建一个标准化的平台,使得互联网信息能...

    mms wap2.0协议

    WAP2.0(Wireless Application Protocol 2.0)则是用于在无线网络上实现互联网服务的协议栈,它提供了更高级别的安全性和性能,相比早期的WAP1.x有显著改进。本文将深入探讨MMS与WAP2.0协议在移动通信中的应用及相互...

    WAP2标准协议文档(全)

    WTA通过WAP协议栈与网络中的相应服务进行交互,增强了移动设备的电话功能,并且可以与其他WAP服务集成,实现更加丰富的应用。 **WAP2.0-20021106文档详解** 这个文件名可能表示的是2002年11月6日发布的WAP2.0规范...

    wap无线应用协议pdf完整版

    WAP协议体系结构包括了一系列的技术规范,使移动设备可以实现包括浏览网页、收发电子邮件、管理个人数据、使用WAP网关服务等在内的多种功能。 本书目录涵盖了无线应用协议体系结构规范的各个方面,具体知识点如下:...

    wap无线应用协议,描述WAP协议。

    2. **数据链路层**:使用WAP无线传输协议(WTP)和无线链路控制(WLC)来实现数据的可靠传输,类似于TCP/IP中的PPP协议。 3. **网络层**:WAP协议栈中的这一层使用无线会话协议(WSP)来处理报文交换,类似HTTP协议...

    WAP(无线应用协议)

    **WAP(无线应用协议)**是为移动设备如手机和平板电脑设计的一种通信协议,旨在提供便捷的数据服务,使用户能在移动网络上访问互联网内容和应用。WAP的出现是为了克服传统互联网协议在有限带宽和低功耗移动设备上的...

    WAP无线应用协议

    **WAP无线应用协议详解** WAP(Wireless Application Protocol)无线应用协议是为移动通信设备设计的一种标准协议,旨在使互联网内容和服务能够通过低带宽的无线网络传输到手机和其他移动设备上。WAP协议栈是基于...

    飞信wap版代码

    "飞信wap版代码"指的是飞信在WAP(无线应用协议)平台上的源代码,主要用于在手机浏览器上运行,提供轻量级的通讯服务。然而,由于描述中提到"看不懂的代码",这暗示着我们可能面对的是编程语言,如PHP,用于构建...

    wap_push协议.rar_push_wap_wap push

    尽管没有实际的文件内容可供分析,但根据文件名“www.pudn.com.txt”和“WAP_PUSH协议”,我们可以推测第一个文件可能包含了从网站www.pudn.com获取的相关资料或讨论,可能涵盖了WAP Push协议的详细规范、实现方法或...

    实现WAP Push业务的两种方式的比较.pdf

    ### 实现WAP Push业务的两种方式的比较 #### 摘要 WAP Push(无线应用协议推送)作为一种在移动通信领域广泛应用的业务营销手段和技术承载方式,在推动信息和服务到达用户方面扮演着重要角色。当前,中国有两种主流...

    WAP协议栈和彩信应用的实现研究.rar

    **WAP协议栈和彩信应用的实现研究** 在移动通信领域,WAP(Wireless Application Protocol)协议栈和MMS(Multimedia Messaging Service)彩信应用是两个至关重要的技术,它们极大地推动了无线互联网的发展,使用户...

Global site tag (gtag.js) - Google Analytics