C#实现飞信短信发送
2012-03-03 20:44
330 查看
第一篇博客,无聊地尝试了一下利用C#来发送飞信。
2012.09.29 现在这种方式由于加了验证码,所以要想方法绕过。。。所以,蛋疼。。
实现的原理
参考了一篇博客:用PHP模拟登录WAP飞信实现飞信发送,地址:http://blog.quanhz.com/archives/118。其中详细地介绍了如何使用模拟WAP的方式,实现了飞信登陆,发送飞信,退出等功能。根据其找到的Post与Get的链接地址,同时,利用C#的HttpWebRequest和HttpWebResponse这两个类,可以很容易就实现出一个能够发送飞信的客户端。
登陆飞信(代码实现详看注释)
发送飞信给自己
实现了登陆之后,发送飞信是一个很简单实现的过程,只需要往特定的URL地址POST短信内容就可以实现。注意点:中文的编码问题以及Cookie的问题。
总结
通过模拟Http的方式实现了飞信的登陆与发送功能,通过对3G飞信的数据抓取与分析,可以由此基础实现很多功能:比如获取天气情况,发送给飞信好友;比如实现远程关机等等应用;又比如我前阵子实现的中大教务系统客户端,原理与这个也很类似,这两者结合起来,就可以实现一个当成绩一公布就用飞信通知相应的同学。
2012.09.29 现在这种方式由于加了验证码,所以要想方法绕过。。。所以,蛋疼。。
实现的原理
参考了一篇博客:用PHP模拟登录WAP飞信实现飞信发送,地址:http://blog.quanhz.com/archives/118。其中详细地介绍了如何使用模拟WAP的方式,实现了飞信登陆,发送飞信,退出等功能。根据其找到的Post与Get的链接地址,同时,利用C#的HttpWebRequest和HttpWebResponse这两个类,可以很容易就实现出一个能够发送飞信的客户端。
登陆飞信(代码实现详看注释)
public static String Login(String mStr, String pwdStr) { // 需要Post的字段:其中,mStr为手机号,pwdStr为密码,loginstatus为登陆状态 String args = "m=" + mStr + "&pass=" + pwdStr + "&loginstatus=4"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://f.10086.cn/im/login/inputpasssubmit1.action"); HttpWebResponse response = null; Encoding encoding = System.Text.Encoding.UTF8; byte[] argsBytes = encoding.GetBytes(args); // 编码转换,UTF-8 request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; request.ContentType = "application/x-www-form-urlencoded"; request.Method = "Post"; // 设置Http请求的方法为Post request.Timeout = 1000; request.CookieContainer = cc; // 实现后续操作关键所在,保存Cookies,其中cc = new CookieContainer(),是我实现的一个类的中静态成员变量; Stream outStream = request.GetRequestStream(); outStream.Write(argsBytes, 0, argsBytes.Length); response = (HttpWebResponse)request.GetResponse(); String resultStr = streamToString(response.GetResponseStream()); // 从返回的响应流中转换成String outStream.Close(); return resultStr; }
发送飞信给自己
public static String SendMsg(String msgStr) { String msg = "msg=" + msgStr; // msgStr为发送的内容 HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://f.10086.cn/im/user/sendMsgToMyselfs.action"); HttpWebResponse response = null; Encoding encoding = System.Text.Encoding.UTF8; // 注意要采用UTF-8的编码 byte[] argsBytes = encoding.GetBytes(msg); request.Accept = "*/*"; request.Timeout = 1000; request.ContentType = "application/x-www-form-urlencoded"; request.Method = "Post"; request.CookieContainer = cc; Stream outStream = request.GetRequestStream(); outStream.Write(argsBytes, 0, argsBytes.Length); response = (HttpWebResponse)request.GetResponse(); String resultStr = streamToString(response.GetResponseStream()); outStream.Close(); return resultStr; }
实现了登陆之后,发送飞信是一个很简单实现的过程,只需要往特定的URL地址POST短信内容就可以实现。注意点:中文的编码问题以及Cookie的问题。
总结
通过模拟Http的方式实现了飞信的登陆与发送功能,通过对3G飞信的数据抓取与分析,可以由此基础实现很多功能:比如获取天气情况,发送给飞信好友;比如实现远程关机等等应用;又比如我前阵子实现的中大教务系统客户端,原理与这个也很类似,这两者结合起来,就可以实现一个当成绩一公布就用飞信通知相应的同学。
相关文章推荐
- C#利用Web Service实现短信发送
- C#简单实现发送手机短信
- C#利用Web Service实现短信发送
- c#实现wavecom短信猫发送长短信
- C#利用Web Service实现短信发送
- C#简单实现发送手机短信
- C#简单实现发送手机短信
- C#利用Web Service实现短信发送
- C#利用Web Service实现短信发送
- WAVECOM 发送短信C#实现
- C#利用Web Service实现短信发送
- C#利用Web Service实现短信发送
- C#利用Web Service实现短信发送(二)
- C#实现发送短信到手机
- C#利用Web Service实现短信发送
- C#利用Web Service实现短信发送
- C#利用Web Service实现短信发送(一)
- C#利用Web Service实现短信发送
- C#利用Web Service实现短信发送
- C#利用sina提供Web Service实现短信发送