续马后炮之12306抢票工具(一) -- 登录
今天完成模块:
添加常用联系人
获取车站列表
获取车次信息
获取常用联系人已经在马后炮之12306抢票工具(一) -- 登录中介绍,不在重复
遇到问题:
1)用TextBox输出日志时,系统UI卡死
1 private void ShowMessage(string message, bool isNewLine = true) 2 { 3 this.Invoke(new Action<string, bool>((m, n) => { _ShowMessage(m, n); }), message, isNewLine); 4 5 } 6 private void _ShowMessage(string message, bool isNewLine = true) 7 { 8 richTextBox1.AppendText(message); 9 if (isNewLine) 10 { 11 richTextBox1.AppendText("\r\n"); 12 } 13 }
2)TextBox焦点一直在底部
1 richTextBox1.SelectionStart = richTextBox1.TextLength; 2 richTextBox1.ScrollToCaret();
3)checkedListBox使用DataSource属性绑定数据源(自定义类列表)后,显示绑定类型。
该问题未解决。如果知道的朋友,请提供以下代码,谢谢。
重写ToString方法。
public override string ToString()
{
return string.Format("{0} {1}({3})->{2}({4})", TrainValue, StartStation, EndStation, StartTime, EndTime);
}
添加常用联系人:
添加常用联系人分两步:
第一步:访问https://dynamic.12306.cn/otsweb/passengerAction.do?method=initUsualPassenger12306# 获取Token
格式:
第二步:将Token和其他数据Post到https://dynamic.12306.cn/otsweb/passengerAction.do?method=savePassenger 创建联系人
PS:没有使用购票时”添加至常用联系人“选项,而是使用”我的12306"页面中的常用联系人功能。
因为在秒杀应用中,浪费十几毫秒都可能导致抢不到,虽然抢票没有秒杀那么夸张,但是不排除因为购票时使用添加联系人功能,导致浪费几十毫秒,甚至几秒。
1 private const string UrlCreateFavoriteContact1_GetToken = "https://dynamic.12306.cn/otsweb/passengerAction.do?method=initUsualPassenger12306#"; 2 3 string token = ""; 4 string str; 5 HttpWebResponse response; 6 7 #region 第一步获取Token 8 try 9 { 10 11 response = HttpHelper.CreateGetHttpResponse(UrlCreateFavoriteContact1_GetToken, timeout, userAgent, cookie ?? Cookies, ""); 12 13 cookies.Add(response.Cookies); 14 15 using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) 16 { 17 str = reader.ReadToEnd(); 18 } 19 } 20 catch (Exception) 21 { 22 return new CreateFavoriteContactResponse() { IsCreated = false, Message = "网络可能存在问题,请您重试一下!", type = ErrorType.NetworkError }; 23 } 24 25 26 Regex Token = new Regex("[^\"]*?)\">