C#实现飞信短信发送

第一篇博客,无聊地尝试了一下利用C#来发送飞信。

  • 实现的原理

  参考了一篇博客:用PHP模拟登录WAP飞信实现飞信发送,地址:http://blog.quanhz.com/archives/118。其中详细地介绍了如何使用模拟WAP的方式,实现了飞信登陆,发送飞信,退出等功能。根据其找到的Post与Get的链接地址,同时,利用C#的HttpWebRequest和HttpWebResponse这两个类,可以很容易就实现出一个能够发送飞信的客户端。

  • 登陆飞信(代码实现详看注释)
复制代码
 1         public static String Login(String mStr, String pwdStr)
 2         {
 3             // 需要Post的字段:其中,mStr为手机号,pwdStr为密码,loginstatus为登陆状态
 4             String args = "m=" + mStr + "&pass=" + pwdStr + "&loginstatus=4";  
 5             HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://f.10086.cn/im/login/inputpasssubmit1.action");
 6             HttpWebResponse response = null;
 7             Encoding encoding = System.Text.Encoding.UTF8;
 8             byte[] argsBytes = encoding.GetBytes(args);         // 编码转换,UTF-8
 9             request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
10             request.ContentType = "application/x-www-form-urlencoded";
11             request.Method = "Post";            // 设置Http请求的方法为Post
12             request.Timeout = 1000;
13             request.CookieContainer = cc;           //  实现后续操作关键所在,保存Cookies,其中cc = new CookieContainer(),是我实现的一个类的中静态成员变量;
14 
15             Stream outStream = request.GetRequestStream();
16             outStream.Write(argsBytes, 0, argsBytes.Length);
17             response = (HttpWebResponse)request.GetResponse();
18             String  resultStr = streamToString(response.GetResponseStream());   //  从返回的响应流中转换成String
19             outStream.Close();
20 
21             return resultStr;
22         }
复制代码

  • 发送飞信给自己
复制代码
 1         public static String SendMsg(String msgStr)
 2         {
 3             String msg = "msg=" + msgStr;  //  msgStr为发送的内容
 4             HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://f.10086.cn/im/user/sendMsgToMyselfs.action");
 5             HttpWebResponse response = null;
 6             Encoding encoding = System.Text.Encoding.UTF8;     // 注意要采用UTF-8的编码
 7             byte[] argsBytes = encoding.GetBytes(msg);
 8             request.Accept = "*/*";
 9             request.Timeout = 1000;
10             request.ContentType = "application/x-www-form-urlencoded";
11             request.Method = "Post";
12             request.CookieContainer = cc;
13             Stream outStream = request.GetRequestStream();
14             outStream.Write(argsBytes, 0, argsBytes.Length);
15             response = (HttpWebResponse)request.GetResponse();
16             String resultStr = streamToString(response.GetResponseStream());
17             outStream.Close();
18 
19             return resultStr;
20         }
复制代码

  实现了登陆之后,发送飞信是一个很简单实现的过程,只需要往特定的URL地址POST短信内容就可以实现。注意点:中文的编码问题以及Cookie的问题。

  • 总结

  通过模拟Http的方式实现了飞信的登陆与发送功能,通过对3G飞信的数据抓取与分析,可以由此基础实现很多功能:比如获取天气情况,发送给飞信好友;比如实现远程关机等等应用;又比如我前阵子实现的中大教务系统客户端,原理与这个也很类似,这两者结合起来,就可以实现一个当成绩一公布就用飞信通知相应的同学。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值