.NET實現Wap飛信協議
作者: 來源: 發布時間:2012-1-8 16:19:03 點擊:
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 && 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 && result.Contains("短信發送成功!");
}
/// <summary>
/// 登陸
/// </summary>
/// <returns></returns>
public string Login()
{
string uri = server + "/im/login/inputpasssubmit1.action";
return PostWithCookie(uri, string.Format("m={0}&pass={1}&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);
}
}
}
}
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 && 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 && result.Contains("短信發送成功!");
}
/// <summary>
/// 登陸
/// </summary>
/// <returns></returns>
public string Login()
{
string uri = server + "/im/login/inputpasssubmit1.action";
return PostWithCookie(uri, string.Format("m={0}&pass={1}&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);
}
}
}
}
Tags:
.NET實現Wap飛信協議[收藏此文章]
本類熱門
本類推薦
本站熱門
東坡下載 & 分享互聯網 Copyright(C) 2008-2010 m.astro-tech.com.cn All Rights Reserved! 網站備案/許可證號:京ICP備10000128號-1
主站蜘蛛池模板:
日韩欧美一级
|
欧美亚洲国产精品久久第一页
|
一级一级 a爱片免费视频
|
亚洲国产精品二区久久
|
色射视频
|
免费久久网
|
亚洲日韩中文第一精品
|
亚欧有色在线观看免费版高清
|
亚洲伊人成综合人影院小说
|
99精品视频在线成人精彩视频
|
1204手机在线观看免费高清
|
国产成人精品cao在线
|
制服美女视频一区
|
中文字幕网站
|
曰批人成在线观看
|
香蕉网站视频高清在线观看
|
免费午夜影片在线观看影院
|
黑丝美脚
|
中文字幕日本一区
|
日日操日日射
|
在线免费污视频
|
狠狠的日
|
国产高清在线精品免费不卡
|
五月天激情婷婷婷久久
|
立即播放免费毛片一级
|
人人骚
|
国产偷国产偷亚洲高清在线
|
男女爱视频免费高清在线观看
|
国产热热
|
丁香婷婷亚洲六月综合色
|
久久精品国产一区
|
日本三级3本三级带黄
|
伊人精品成人久久综合欧美
|
生活片一级性
|
h在线国产
|
精品在线播放
|
国产成人黄色
|
2018日日夜夜操
|
国产黄色大片在线观看
|
色视频www在线播放国产人成
|
欧美人成一本免费观看视频
|