发送 poll包
1using System.Data;
2using System.Data.SqlClient;
3using System.Configuration;
4using System.Web;
5using System.Web.Security;
6using System.Web.UI;
7using System.Web.UI.WebControls;
8using System.Web.UI.WebControls.WebParts;
9using System.Web.UI.HtmlControls;
10using System.Drawing;
11using System.IO;
12using System.Web.Mail;
13using System.Text.RegularExpressions;
14using System.Text;
15
16/**//// <summary>
17/// CommonUI 公共艺术
18/// </summary>
19public class CommonUI : System.Web.UI.Page
20{
21
22 只弹出新闻#region 只弹出音讯
23 /**//// <summary>
24 /// 只弹出音讯
25 /// </summary>
26 /// <param name=”msg”>弹出的音信</param>
27 public static void Alert(string msg)
28
{
29 string s = “<script language=’javascript’ >alert(\”” + msg + “\”);</script>”;
30 HttpContext.Current.Response.Write(s);
31 }
32 #endregion
33
34 弹出并回到#region 弹出并再次回到
35 /**//// <summary>
36 /// 弹出并回到
37 /// </summary>
38 /// <param name=”msg”>弹出的音信</param>
39 /// <param name=”msg”>再次来到哪超级的数字:如-1遍去上壹页</param>
40 public static void AlertAndGo(string msg, int intGo)
41
{
42 string s = “<script language=’javascript’ >alert(\”” + msg + “\”);history.go(” + intGo + “)</script>”;
43 HttpContext.Current.Response.Write(s);
44 }
45 #endregion
46
47 只进行页面跳转#region 只实行页面跳转
48 /**//// <summary>
49 /// 只举行页面跳转
50 /// </summary>
51 /// <param name=”url”>跳转的靶子U大切诺基L</param>
52 public static void AlertRedirect(string url)
53
{
54 string s = “<script language=’javascript’ >window.location='” + url + “‘;</script>”;
55 HttpContext.Current.Response.Write(s);
56 }
57 #endregion
58
59 展现消息提示对话框,并开始展览页面跳转#region 展现新闻提示对话框,并实行页面跳转
60 /**//// <summary>
61 /// 呈现音信提醒对话框,并拓展页面跳转
62 /// </summary>
63 /// <param name=”msg”>提醒音讯</param>
64 /// <param name=”url”>跳转的指标U帕杰罗L</param>
65 public static void AlertAndRedirect(string msg, string url)
66
{
67 string s = “<script language=’javascript’ >alert(\”” + msg + “\”);window.location='” + url + “‘;</script>”;
68 HttpContext.Current.Response.Write(s);
69 }
70 #endregion
71
72 判断是或不是日期#region 判断是或不是日期
73 /**//// <summary>
74 /// 判断是不是日期
75 /// </summary>
76 /// <param name=”strValue”>判断是不是日期</param>
77 /// <returns>bool</returns>
78 public static bool IsDateTime(string strValue)
79
{
80 bool bolReturn;
81 DateTime dteReturn;
82 if (strValue == null)
83
{
报到成功后拿走,分享一下在aspx页面弹框的安装代码。 84 bolReturn = false;
85 }
86 try
87
{
88 dteReturn = Convert.ToDateTime(strValue);
89 bolReturn = true;
90 }
91 catch
92
{
93 bolReturn = false;
94 }
95 return bolReturn;
96 }
97 #endregion
98
99 将字符串转换来日期#region 将字符串转换来日期
100 /**//// <summary>
101 /// 将字符串转换到日期
102 /// </summary>
103 /// <param name=”strValue”>将字符串转换来日期</param>
104 /// <returns>int</returns>
105 public static DateTime GetDateTime(string strValue)
106
{
107 return Convert.ToDateTime(strValue);
108 }
109 #endregion
110
111 汉字字符串转拼音缩写#region 汉字字符串转拼音缩写
112 /**//// <summary>
113 /// 汉字字符串转拼音缩写
114 /// </summary>
115 /// <param name=”str”>要更换的汉字字符串</param>
116 /// <param name=”IsSmallChar”>是不是用小写字母</param>
117 /// <returns>拼音缩写</returns>
118 public static string GetPYString(string str,bool IsSmallChar)
119
{
120 string tempStr = “”;
121 foreach (char c in str)
122
{
123 if ((int)c >= 33 && (int)c <= 126)
124
{//字母和标志原样保留
125 tempStr += c.ToString();
126 }
127 else
128
{//累加拼音声母
129 tempStr += GetPYChar(c.ToString(), IsSmallChar);
130 }
131 }
132 return tempStr;
133 }
134 #endregion
135
136 将单个汉字转拼音缩写#region 将单个汉字转拼音缩写
137 /**//// <summary>
138 /// 将单个汉字转拼音缩写
139 /// </summary>
140 /// <param name=”c”>要转移的单个汉字</param>
141 /// <param name=”IsSmallChar”>是或不是用小写字母</param>
142 /// <returns>拼音声母</returns>
143 public static string GetPYChar(string c, bool IsSmallChar)
144
{
145 byte[] array = new byte[2];
146 string strReturn = “*”;
147 array = System.Text.Encoding.Default.GetBytes(c);
148 int i = (short)(array[0] – ‘\0’) * 256 + ((short)(array[1] – ‘\0’));
149
150 if (i < 0xB0A1) strReturn = “*”;
151 if (i < 0xB0C5) strReturn = “A”;
152 if (i < 0xB2C1) strReturn = “B”;
153 if (i < 0xB4EE) strReturn = “C”;
154 if (i < 0xB6EA) strReturn = “D”;
155 if (i < 0xB7A2) strReturn = “E”;
156 if (i < 0xB8C1) strReturn = “F”;
157 if (i < 0xB9FE) strReturn = “G”;
158 if (i < 0xBBF7) strReturn = “H”;
159 if (i < 0xBFA6) strReturn = “J”;
160 if (i < 0xC0AC) strReturn = “K”;
161 if (i < 0xC2E8) strReturn = “L”;
162 if (i < 0xC4C3) strReturn = “M”;
163 if (i < 0xC5B6) strReturn = “N”;
164 if (i < 0xC5BE) strReturn = “O”;
165 if (i < 0xC6DA) strReturn = “P”;
166 if (i < 0xC8BB) strReturn = “Q”;
167 if (i < 0xC8F6) strReturn = “R”;
168 if (i < 0xCBFA) strReturn = “S”;
169 if (i < 0xCDDA) strReturn = “T”;
170 if (i < 0xCEF4) strReturn = “W”;
171 if (i < 0xD1B9) strReturn = “X”;
172 if (i < 0xD4D1) strReturn = “Y”;
173 if (i < 0xD7FA) strReturn = “Z”;
174
175 if (IsSmallChar) strReturn =strReturn.ToLower();//是还是不是用小写
176
177 return strReturn;
178 }
179 #endregion
180
181 向地方中进入?或&#region 向地点中加入?或&
182 /**//// <summary>
183 /// 向地点中投入?或&
184 /// </summary>
185 /// <param name=”strValue”>要处理的字符串</param>
186 /// <returns>加了?或&的网址</returns>
187 public static string JoinChar(string strValue)
188
{
189 int intValue1, intValue2, intLen;
190
191 intLen = strValue.Length;
192 intValue1 = strValue.IndexOf(“?”);
193 intValue2 = strValue.LastIndexOf(“&”);
194 if (intValue1 > 0 && intValue1 < intLen – 1)
195
{
196 if ((intValue2 > 0 && intValue2 < intLen – 1) || intValue2 == -1)
197
{
198 return strValue + “&”;
199 }
200 else
201
{
202 return strValue;
203 }
204 }
205 else if (intValue1 == intLen – 1)
206
{
207 return strValue;
208 }
209 else
210
{
211 return strValue + “?”;
212 }
213
214 }
215 #endregion
216
217 去掉地址中”page=”及其背后字符#region 去掉地址中”page=”及其背后字符
218 /**//// <summary>
219 /// 去掉地址中&page=”及其背后字符
220 /// </summary>
221 /// <param name=”strValue”>要拍卖的字符串</param>
222 /// <returns>去掉地址中”page=”及其背后字符</returns>
223 public static string GetPageURL(string strValue)
224
{
225 int intValue, intLen;
226
227 intLen = strValue.Length;
228 intValue = strValue.IndexOf(“page=”);
229 if (intValue > 0 && intValue < intLen – 5)
230
{
231 return strValue.Substring(0, intValue);
232 }
233 else
234
{
235 return strValue;
236 }
237
238 }
239 #endregion
240
241 过滤/还原 带有 HTML-JS 的字符串#region 过滤/还原 带有 HTML-JS 的字符串
242 public static string htmlInputText(string inputString)//HTML过滤输入字符串
243
{
244 if ((inputString != null) && (inputString != String.Empty))
245
{
246 inputString = inputString.Trim();
247 inputString = inputString.Replace(“‘”, “"”);
248 inputString = inputString.Replace(“<“, “<“);
249 inputString = inputString.Replace(“>”, “>”);
250 inputString = inputString.Replace(” “, ” “);
251 inputString = inputString.Replace(“\n”, “<br>”);
252 return inputString.ToString();
253 }
254 return “”;
255 }
256
257 public static string htmlOutputText(string inputString)//HTML还原字符串
258
{
259 if ((inputString != null) && (inputString != String.Empty))
260
{
261 inputString = inputString.Trim();
262 inputString = inputString.Replace(“"”, “‘”);
263 inputString = inputString.Replace(“<“, “<“);
264 inputString = inputString.Replace(“>”, “>”);
265 inputString = inputString.Replace(” “, ” “);
266 inputString = inputString.Replace(“<br>”, “\n”);
267 return inputString.ToString();
268 }
269 return “”;
270 }
271
272 public static string htmlInputTextfck(string inputString)//HTML还原字符串
273
{
274 if ((inputString != null) && (inputString != String.Empty))
275
{
276 inputString = inputString.Trim();
277 inputString = inputString.Replace(“‘”, ” “);
278 inputString = inputString.Replace(” “, ” “);
279 return inputString.ToString();
280 }
281 return “”;
282亚洲必赢官网 , }
283
284 public static string htmlInputface(string inputString)//HTML过滤输入字符串
285
{
286 if ((inputString != null) && (inputString != String.Empty))
287
{
288 inputString = inputString.Trim();
289 inputString = inputString.Replace(“‘”, “"”);
290 inputString = inputString.Replace(“<“, “<“);
291 inputString = inputString.Replace(“>”, “>”);
292 inputString = inputString.Replace(” “, ” “);
293 inputString = inputString.Replace(“\n”, “<br>”);
294 inputString = inputString.Replace(“{image01}”, “<IMG src=face/01.gif>”);
295 inputString = inputString.Replace(“{image02}”, “<IMG src=face/02.gif>”);
296 inputString = inputString.Replace(“{image03}”, “<IMG src=face/03.gif>”);
297 inputString = inputString.Replace(“{image04}”, “<IMG src=face/04.gif>”);
298 inputString = inputString.Replace(“{image05}”, “<IMG src=face/05.gif>”);
299 inputString = inputString.Replace(“{image06}”, “<IMG src=face/06.gif>”);
300 inputString = inputString.Replace(“{image07}”, “<IMG src=face/07.gif>”);
301 inputString = inputString.Replace(“{image08}”, “<IMG src=face/08.gif>”);
302 inputString = inputString.Replace(“{image09}”, “<IMG src=face/09.gif>”);
303 inputString = inputString.Replace(“{image10}”, “<IMG src=face/10.gif>”);
304 inputString = inputString.Replace(“{image11}”, “<IMG src=face/11.gif>”);
305 return inputString.ToString();
306 }
307 return “”;
308 }
309
310 #endregion
311
312 去除HTML标记#region 去除HTML标记
313 /**//// <summary>
314 /// 去除HTML标记
315 /// 可能用简单的,直接除去<>里面包车型地铁情节
316 /// = System.Text.RegularExpressions.Regex.Replace(strHtml, “<[^>]+>”, “”);
317 /// </summary>
318 /// <param name=”NoHTML”>包括HTML的源码 </param>
319 /// <returns>已经去除后的文字</returns>
320 public static string NoHTML(string Htmlstring)
321
{
322 //删除脚本
323 Htmlstring = Regex.Replace(Htmlstring, @”<script[^>]*?>.*?</script>”, “”, RegexOptions.IgnoreCase);
324
325 //删除HTML
326 Htmlstring = Regex.Replace(Htmlstring, @”<(.[^>]*)>”, “”, RegexOptions.IgnoreCase);
327 Htmlstring = Regex.Replace(Htmlstring, @”([\r\n])[\s]+”, “”, RegexOptions.IgnoreCase);
328 Htmlstring = Regex.Replace(Htmlstring, @”–>”, “”, RegexOptions.IgnoreCase);
329 Htmlstring = Regex.Replace(Htmlstring, @”<!–.*”, “”, RegexOptions.IgnoreCase);
330
331 Htmlstring = Regex.Replace(Htmlstring, @”&(quot|#34);”, “\””, RegexOptions.IgnoreCase);
332 Htmlstring = Regex.Replace(Htmlstring, @”&(amp|#38);”, “&”, RegexOptions.IgnoreCase);
333 Htmlstring = Regex.Replace(Htmlstring, @”&(lt|#60);”, “<“, RegexOptions.IgnoreCase);
334 Htmlstring = Regex.Replace(Htmlstring, @”&(gt|#62);”, “>”, RegexOptions.IgnoreCase);
335 Htmlstring = Regex.Replace(Htmlstring, @”&(nbsp|#160);”, ” “, RegexOptions.IgnoreCase);
336 Htmlstring = Regex.Replace(Htmlstring, @”&(iexcl|#161);”, “\xa1”, RegexOptions.IgnoreCase);
337 Htmlstring = Regex.Replace(Htmlstring, @”&(cent|#162);”, “\xa2”, RegexOptions.IgnoreCase);
338 Htmlstring = Regex.Replace(Htmlstring, @”&(pound|#163);”, “\xa3”, RegexOptions.IgnoreCase);
339 Htmlstring = Regex.Replace(Htmlstring, @”&(copy|#169);”, “\xa9”, RegexOptions.IgnoreCase);
340 Htmlstring = Regex.Replace(Htmlstring, @”(\d+);”, “”, RegexOptions.IgnoreCase);
341 Htmlstring.Replace(“<“, “”);
342 Htmlstring.Replace(“>”, “”);
343 Htmlstring.Replace(“\r\n”, “”);
344 Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
345
346 return Htmlstring;
347
348 }
349 #endregion
350
351 从左边取钦定长度的字符串 汉语算 贰 个#region 从左侧取钦点长度的字符串 汉语算 2 个
352 /**//// <summary>
353 /// 从左边取钦定长度的字符串 粤语算 贰 个
354 /// </summary>
355 /// <param name=”inputString”>要截取的字符串</param>
356 /// <param name=”len”>要截取的长短</param>
357 /// <param name=”bolPoint”>是不是出示
</param>
358 /// <returns>截取后的字符串</returns>
359 public static string CutString(string inputString, int len, bool bolPoint)
360
{
361
362 ASCIIEncoding ascii = new ASCIIEncoding();
363 int tempLen = 0;
364 string tempString = “”;
365 byte[] s = ascii.GetBytes(inputString);
366 for (int i = 0; i < s.Length; i++)
367
{
368 //中文算 2 个
369 if ((int)s[i] == 63)
370
{
371 tempLen += 2;
372 }
373 else
374
{
375 tempLen += 1;
376 }
377
378 try
379
{
380 tempString += inputString.Substring(i, 1);
381 }
382 catch
383
{
384 break;
385 }
386
387 if (tempLen > len)
388 break;
389 }
390
391 //加上半个省略号
392 byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString);
393 if (bolPoint && mybyte.Length > len)
394
{
395 tempString += “…”;
396 }
397
398 return tempString;
399 }
400 #endregion
401
402}
public static class MessageBox
{
/// <summary>
/// 展现消息提醒对话框
/// </summary>
/// <param name=”page”>当前页面指针,1般为this</param>
/// <param name=”msg”>提示音信</param>
public static void Show(System.Web.UI.Page page, string msg)
{
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page),
“message”, “<script type=\”text/javascript\”
language=\”javascript\” defer>alert(‘” + StrSafe +
“‘);</script>”);
}
public static void Login_PostPoll()
{
try
{
string url = “”;
string dat =
“{\”ptwebqq\”:\”#{ptwebqq}\”,\”clientid\”:53999199,\”psessionid\”:\”#{psessionid}\”,\”key\”:\”\”}”;
dat = dat.Replace(“#{ptwebqq}”,
Login_ptwebqq).Replace(“#{psessionid}”, Login_Psessionid);
dat = “r=” + HttpUtility.UrlEncode(dat);
HTTP.Post_Async_Action action = Message_Get;
HTTP.Post_Async(url, dat, action);
}
catch (Exception) { Login_PostPoll(); }
}
#endregion
#region 接收到音信的回调函数
/// <summary>
/// 接收到音讯的回调函数
/// </summary>
/// <param name=”data”>接收到的多少(json)</param>
private static bool Running = true;
public static void Message_Get(string data)
{
Task.Run(() => Login_PostPoll());
if (Running)
Task.Run(() =>
Message_Process(data));//那一个是拍卖收到音讯的其余五个主意具体处理
在源码
}
/// <summary>
/// 展现消息提醒对话框
/// </summary>
/// <param name=”page”>当前页面指针,壹般为this</param>
/// <param name=”msg”>提醒消息</param>
public static void Show(System.Web.UI.Page page, string key, string
msg)
{
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), key,
“<script type=\”text/javascript\” language=\”javascript\”
defer>alert(‘” + StrSafe + “‘);</script>”);
}
如上便是poll包的处理以及 收到的音信处理
public static void Login_GetPHV()
{
string urldata =
“{\”ptwebqq\”:\”#{ptwebqq}\”,\”clientid\”:53999199,\”psessionid\”:\”\”,\”status\”:\”online\”}”.Replace(“#{ptwebqq}”,
Login_ptwebqq);
urldata = “r=” + HttpUtility.UrlEncode(urldata);
string dat = HTTP.Post(“”, urldata,
“”);
/// <summary>
/// 提示音信关闭页面,音信可为空不显得。
/// </summary>
/// <param name=”page”>当前页面指针,壹般为this</param>
/// <param name=”msg”>提醒音信,为空则不提示</param>
public static void Close(System.Web.UI.Page page, string msg)
{
string js = “<script type=\”text/javascript\”
language=\”javascript\” defer>”;
if (msg != “”)
js += “alert(‘” + msg.ToString;”;
js += “window.close();</script>”;
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page),
“message”, js);
}
/// <summary>
/// 提示音讯关闭页面,新闻可为空不出示。
/// </summary>
/// <param name=”page”>当前页面指针,一般为this</param>
/// <param name=”msg”>提醒音信,为空则不提示</param>
public static void Close(System.Web.UI.Page page, string key, string
msg)
{
string js = “<script type=\”text/javascript\”
language=\”javascript\” defer>”;
if (msg != “”)
js += “alert(‘” + msg.ToString;”;
js += “window.close();</script>”;
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), key,
js);
}
接下去是 发送的
Login_Psessionid = dat.Replace(“:”, “,”).Replace(“{“, “”).Replace(“}”,
“”).Replace(“\””, “”).Split(‘,’)[10];
Login_QQ = dat.Replace(“:”, “,”).Replace(“{“, “”).Replace(“}”,
“”).Replace(“\””, “”).Split(‘,’)[14];//登录QQ
//Login_Vfwebqq = dat.Replace(“:”, “,”).Replace(“{“, “”).Replace(“}”,
“”).Replace(“\””, “”).Split(‘,’)[18];
Login_Hash = Hash2(Login_QQ, Login_ptwebqq);//
在这一个js 获得尤其hash的值
JS里面包车型大巴艺术名是Hash2 里面是16进制
必要转移成C#的类型。第多少个参数是实际QQ第3个ptwebqq
//一开始拿地方的cookie
里面包车型客车Vfwebqq,是老大的,再请求2遍,得到收获好友新闻的vfwebqq
string urlvfwebqq =
“”,
Login_ptwebqq).Replace(“#{t}”, TimeStamp());
string datVfwebqq = HTTP.Get(urlvfwebqq,
“”);
Login_Vfwebqq = datVfwebqq.Split(‘\”‘)[7];
SendOnlog(Login_QQ +”/r/n”+ Login_Vfwebqq + “/r/n” + Login_Psessionid
/// <summary>
/// 屏蔽提醒关闭窗口
/// </summary>
/// <param name=”page”></param>
/// <param name=”msg”></param>
public static void DClose(System.Web.UI.Page page, string msg)
{
StringBuilder js = new StringBuilder(“<script
type=\”text/javascript\” language=\”javascript\” defer>”);
if (msg != “”)
js.AppendLine(“alert(‘” + msg.ToString;”);
js.AppendLine(“var ua = navigator.userAgent; var ie =
navigator.appName==\”Microsoft Internet Explorer\”?true:false;”);
js.AppendLine{“);
js.AppendLine(“var IEversion =
parseFloat(ua.substring(ua.indexOf(\”MSIE
\”)+5,ua.indexOf(\”;\”,ua.indexOf(\”MSIE \”))));”);
js.AppendLine(“if( IEversion< 5.5){“);
js.AppendLine(“var str = ”;”);
js.AppendLine(“document.body.insertAdjacentHTML(\”beforeEnd\”,
str);”);
js.AppendLine(“document.all.noTipClose.Click;
js.AppendLine(“} else {“);
js.AppendLine(“window.opener =null; window.close;
js.AppendLine;
js.AppendLine;
js.AppendLine(“window.close;
js.AppendLine(“</script>”);
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page),
“message”, js.ToString;
}
- “/r/n” + Login_Hash);
}
/// <summary>
/// 屏蔽提醒关闭窗口
/// </summary>
/// <param name=”page”></param>
/// <param name=”msg”></param>
public static void DClose(System.Web.UI.Page page, string key, string
msg)
{
StringBuilder js = new StringBuilder(“<script
type=\”text/javascript\” language=\”javascript\” defer>”);
if (msg != “”)
js.AppendLine(“alert(‘” + msg.ToString;”);
js.AppendLine(“var ua = navigator.userAgent; var ie =
navigator.appName==\”Microsoft Internet Explorer\”?true:false;”);
js.AppendLine{“);
js.AppendLine(“var IEversion =
parseFloat(ua.substring(ua.indexOf(\”MSIE
\”)+5,ua.indexOf(\”;\”,ua.indexOf(\”MSIE \”))));”);
js.AppendLine(“if( IEversion< 5.5){“);
js.AppendLine(“var str = ”;”);
js.AppendLine(“document.body.insertAdjacentHTML(\”beforeEnd\”,
str);”);
js.AppendLine(“document.all.noTipClose.Click;
js.AppendLine(“} else {“);
js.AppendLine(“window.opener =null; window.close;
js.AppendLine;
js.AppendLine;
js.AppendLine(“window.close;
js.AppendLine(“</script>”);
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), key,
js.ToString;
}
地点就足以得到 Login_ptwebqq Login_Psessionid ,Login_Hash 这个hash
需要
/// <summary>
/// 控件点击新闻确认提醒框
/// </summary>
/// <param name=”page”>当前页面指针,1般为this</param>
/// <param name=”msg”>提醒音信</param>
public static void ShowConfirm(System.Web.UI.WebControls.WebControl
Control, string msg)
{
//Control.Attributes.Add(“onClick”,”if
(!window.confirm(‘”+msg+”‘)){return false;}”);
Control.Attributes.Add(“onclick”, “return confirm(‘” + msg + “‘);”);
}
上边是出殡和埋葬的接连以及 发送后赶回的 poll包消息。代码如下
在那些js 得到丰硕hash的值
JS里面包车型客车秘籍名是Hash二 里面是1陆进制 须要转移成C# 也能够直接
调用这些JS。第3个参数是Login_QQ 第二个Login_ptwebqq
/// <summary>
/// 展现新闻提示对话框,并拓展页面跳转
/// </summary>
/// <param name=”page”>当前页面指针,1般为this</param>
/// <param name=”msg”>提醒信息</param>
/// <param name=”url”>跳转的目的UPRADOL</param>
public static void ShowAndRedirect(System.Web.UI.Page page, string msg,
string url)
{
StringBuilder Builder = new StringBuilder();
Builder.Append(“<script type=\”text/javascript\”
language=\”javascript\” defer>”);
if (msg != “”)
Builder.AppendFormat(“alert;”, msg);
Builder.AppendFormat(“window.location.href='{0}’;”, url);
Builder.Append(“</script>”);
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page),
“message”, Builder.ToString;
}
/// <summary>
///
/// </summary>
/// <param name=”type”>私聊0 群聊1 讨论组2</param>
/// <param name=”uin”>uin</param>
/// <param name=”messageToSend”>消息</param>
/// <param name=”auto”></param>
/// <returns></returns>
public static bool Login_Postsend_buddy_msg(int type, string uin,
string messageToSend)
{
if (messageToSend.Equals(“”) || uin.Equals(“”))
return false;
string[] tmp = messageToSend.Split(“{}”.ToCharArray());
messageToSend = “”;
for (int i = 0; i < tmp.Length; i++)
if (!tmp[i].Trim().StartsWith(“..[face”) ||
!tmp[i].Trim().EndsWith(“]..”))
messageToSend += “\\\”” + tmp[i] + “\\\”,”;
else
messageToSend += tmp[i].Replace(“..[face”,
“[\\\”face\\\”,”).Replace(“]..”, “],”);
messageToSend = messageToSend.Remove(messageToSend.LastIndexOf(‘,’));
messageToSend = messageToSend.Replace(“\r\n”, “\n”).Replace(“\n\r”,
“\n”).Replace(“\r”, “\n”).Replace(“\n”, Environment.NewLine);
try
{
string to_groupuin_did, url;
switch (type)
{
case 0:
to_groupuin_did = “to”;
url = “”;
break;
case 1:
to_groupuin_did = “group_uin”;
url = “”;
break;
case 2:
to_groupuin_did = “did”;
url = “”;
break;
default:
return false;
}
string postData =
“{\”#{type}\”:#{id},\”content\”:\”[#{msg},[\\\”font\\\”,{\\\”name\\\”:\\\”繁体\\\”,\\\”size\\\”:10,\\\”style\\\”:[0,0,0],\\\”color\\\”:\\\”000000\\\”}]]\”,\”face\”:#{face},\”clientid\”:53999199,\”msg_id\”:#{msg_id},\”psessionid\”:\”#{psessionid}\”}”;
postData = “r=” + HttpUtility.UrlEncode(postData.Replace(“#{type}”,
to_groupuin_did).Replace(“#{id}”, uin).Replace(“#{msg}”,
messageToSend).Replace(“#{face}”,
SelfInfo.face.ToString()).Replace(“#{msg_id}”, rand.Next(10000000,
99999999).ToString()).Replace(“#{psessionid}”, Login_Psessionid));
public static string Hash2(string uin, string ptvfwebqq)
{
int[] ptbIndex = new int[4];
long QQ_Long = long.Parse(uin);
for (int i = 0; i < ptvfwebqq.Length; i++)
{
ptbIndex[i % 4] ^= ptvfwebqq.ToCharArray()[i];
}
string[] salt = { “EC”, “OK” };
long[] uinByte = new long[4];
uinByte[0] = QQ_Long >> 24 & 255 ^
salt[0].ToCharArray()[0];
uinByte[1] = QQ_Long >> 16 & 255 ^
salt[0].ToCharArray()[1];
uinByte[2] = QQ_Long >> 8 & 255 ^
salt[1].ToCharArray()[0];
uinByte[3] = QQ_Long & 255 ^ salt[1].ToCharArray()[1];
/// <summary>
/// 输出自定义脚本新闻
/// </summary>
/// <param name=”page”>当前页面指针,壹般为this</param>
/// <param name=”script”>输出脚本</param>
public static void ResponseScript(System.Web.UI.Page page, string
script)
{
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page),
“message”, “<script type=\”text/javascript\”
language=\”javascript\” defer>” + script + “</script>”);
}
/// <summary>
/// 输出自定义脚本音讯
/// </summary>
/// <param name=”page”>当前页面指针,一般为this</param>
/// <param name=”script”>输出脚本</param>
public static void ResponseScript(System.Web.UI.Page page, string key,
string script)
{
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page), key,
“<script type=\”text/javascript\” language=\”javascript\”
defer>” + script + “</script>”);
}
string dat = HTTP.Post(url, postData,
“”);
return dat.Equals(“{\”errCode\”:0,\”msg\”:\”send ok\”}”);
}
catch (Exception)
{
return false;
}
}
long[] result = new long[8];
/// <summary>
/// 页面后退
/// </summary>
/// <param name=”page”>当前页面指针,1般为this</param>
/// <param name=”count”>后倒退数</param>
public static void HistoryBack(System.Web.UI.Page page, int count)
{
StringBuilder Builder = new StringBuilder();
Builder.Append(“<script type=\”text/javascript\”
language=\”javascript\” defer>”);
Builder.AppendFormat(“window.history.go”, count);
Builder.Append(“</script>”);
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page),
“historygo”, Builder.ToString;
}
for (int i = 0; i < 8; i++)
{
result[i] = i % 2 == 0 ? ptbIndex[i >> 1] : uinByte[i
>> 1];
}
/// <summary>
/// 再次来到上壹页
/// </summary>
/// <returns></returns>
public static void HistoryBack(System.Web.UI.Page page)
{
page.ClientScript.RegisterStartupScript(typeof(System.Web.UI.Page),
“historygo”, “<script type=\”text/javascript\”
language=\”javascript\” defer>\n window.history.go; \n
</script>”);
}
那壹讲费了成都百货上千光阴,中间又去查了素材。越发是拍卖回来的 包的json
,不领悟怎么格式化,只好替换出来,获得想要的多寡。
string[] hex = { “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”,
“A”, “B”, “C”, “D”, “E”, “F” };
string buf = “”;
/// <summary>
/// js安全转移
/// </summary>
/// <param name=”str”>源字符</param>
/// <returns>再次回到代码</returns>
public static string StrSafe(string str)
{
StringBuilder rd = new StringBuilder;
rd.Replace(“\b”, “\\b”);
rd.Replace(“\f”, “\\f”);
rd.Replace(“\n”, “\\n”);
rd.Replace(“\r”, “\\r”);
rd.Replace(“\t”, “\\t”);
rd.Replace(“\'”, “\\'”);
rd.Replace(“\””, “\\\””);
return rd.ToString();
}
for (int i= 0; i < result.Length; i++)
{
buf += hex[(int)((result[i] >> 4) & 15)];
buf += hex[(int)(result[i] & 15)];
}
return buf;
}
#region Ajax
/// <summary>
/// 展现音信提示对话框
/// </summary>
/// <param name=”page”>当前页面指针,一般为this</param>
/// <param name=”msg”>提示新闻</param>
public static void AjaxShow(System.Web.UI.Page page, string msg)
{
System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(),
“message”, “alert(‘” + StrSafe + “‘);”, true);
}
/// <summary>
/// 呈现音信提示对话框
/// </summary>
/// <param name=”page”>当前页面指针,一般为this</param>
/// <param name=”msg”>提醒新闻</param>
public static void AjaxShow(System.Web.UI.Page page, string key, string
msg)
{
System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(),
key, “alert(‘” + StrSafe + “‘);”, true);
}
/// <summary>
/// 展现音信提醒对话框,并开始展览页面跳转
/// </summary>
/// <param name=”page”>当前页面指针,①般为this</param>
/// <param name=”msg”>提醒消息</param>
/// <param name=”url”>跳转的对象U中华VL</param>
public static void AjaxShowAndRedirect(System.Web.UI.Page page, string
msg, string url)
{
StringBuilder Builder = new StringBuilder();
if (msg != “”)
Builder.AppendFormat(“alert;”, msg);
Builder.AppendFormat(“window.location.href='{0}’;”, url);
System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(),
“message”, Builder.ToString;
}
/// <summary>
/// 突显新闻提示对话框,并开始展览页面跳转
/// </summary>
/// <param name=”page”>当前页面指针,一般为this</param>
/// <param name=”msg”>提示消息</param>
/// <param name=”url”>跳转的靶子U逍客L</param>
public static void AjaxShowAndRedirect(System.Web.UI.Page page, string
key, string msg, string url)
{
StringBuilder Builder = new StringBuilder();
if (msg != “”)
Builder.AppendFormat(“alert;”, msg);
Builder.AppendFormat(“window.location.href='{0}’;”, url);
System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(),
key, Builder.ToString;
}
/// <summary>
/// 提示消息关闭页面,新闻可为空不出示。
/// </summary>
/// <param name=”page”>当前页面指针,1般为this</param>
/// <param name=”msg”>提示音讯,为空则不提示</param>
public static void AjaxClose(System.Web.UI.Page page, string msg)
{
string js = “”;
if (msg != “”)
js += “alert(‘” + msg.ToString;”;
js += “window.close();”;
System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(),
“message”, js, true);
}
/// <summary>
/// 提醒音信关闭页面,消息可为空不出示。
/// </summary>
/// <param name=”page”>当前页面指针,一般为this</param>
/// <param name=”msg”>提示音讯,为空则不提示</param>
public static void AjaxClose(System.Web.UI.Page page, string key, string
msg)
{
string js = “”;
if (msg != “”)
js += “alert(‘” + msg.ToString;”;
js += “window.close();”;
System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(),
key, js, true);
}
/// <summary>
/// 输出自定义脚本音讯
/// </summary>
/// <param name=”page”>当前页面指针,一般为this</param>
/// <param name=”script”>输出脚本</param>
public static void AjaxResponseScript(System.Web.UI.Page page, string
script)
{
System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(),
“message”, script, true);
}
/// <summary>
/// 输出自定义脚本消息
/// </summary>
/// <param name=”page”>当前页面指针,1般为this</param>
/// <param name=”script”>输出脚本</param>
public static void AjaxResponseScript(System.Web.UI.Page page, string
key, string script)
{
System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(),
key, script, true);
}
/// <summary>
/// 页面后退
/// </summary>
/// <param name=”page”>当前页面指针,1般为this</param>
/// <param name=”count”>后倒退数</param>
public static void AjaxHistoryBack(System.Web.UI.Page page, int count)
{
StringBuilder Builder = new StringBuilder();
Builder.AppendFormat(“window.history.go;”, count);
System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(),
“historygo”, Builder.ToString;
}
/// <summary>
/// 重回上一页
/// </summary>
/// <returns></returns>
public static void AjaxHistoryBack(System.Web.UI.Page page)
{
System.Web.UI.ScriptManager.RegisterStartupScript(page, page.GetType(),
“historygo”, “window.history.go\”;”, true);
}
#endregion
}
到以后结束,整个新手smart qq http 协议的教程
已经得以说成功了,因为那一个体协会议的作用相当单纯,并且很多都曾经被TX去掉的,就好像获取好友的
真实QQ也1度是报错的。接下来就可以做图形界面,还有部分业务了(qq机器人自动回复等)
上述正是C# 获取smart qq 的vfwebqq ,psessionid,hash