本来想做个邮件发送的软件。现在不知道咋的获取到了sid用sid拼接链接去提交post老是提示登录过期的。郁闷啊。希望苏飞老大可以提示一下。
或者给个登录 http://w.mail.qq.com/ 和post发邮件的例子{:soso_e113:}
登录3GQQ的可以成功实现并获取SID,和获取webQQ的SID值。
有日志窗口,那样输出信息的时候会比较方便查看。
下面是关键代码。完整代码在附件。
[C#] 纯文本查看 复制代码 /拼接格式化post数据,登录3GQQ
string dates = string.Format("qq={0}&pwd={1}&toQQchat=true&q_from=&modifySKey=0&loginType=1", names, passs);
HttpHelper http = new HttpHelper();
HttpItem item = new HttpItem()
{
URL = "http://pt.3g.qq.com/handleLogin",//URL 必需项
Method = "post",//URL 可选项 默认为Get
IsToLower = false,//得到的HTML代码是否转成小写 可选项默认转小写
//Cookie = "",//字符串Cookie 可选项
Referer = "http://pt.3g.qq.com/handleLogin",//来源URL 可选项
Postdata = dates,//Post数据 可选项GET时不需要写
Timeout = 100000,//连接超时时间 可选项默认为100000
ReadWriteTimeout = 30000,//写入Post数据超时时间 可选项默认为30000
UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36",//用户的浏览器类型,版本,操作系统 可选项有默认值
ContentType = "application/x-www-form-urlencoded",//返回类型 可选项有默认值
Allowautoredirect = false,//是否根据301跳转 可选项
//CerPath = "d:\123.cer",//证书绝对路径 可选项不需要证书时可以不写这个参数
//Connectionlimit = 1024,//最大连接数 可选项 默认为1024
ProxyIp = "",//代理服务器ID 可选项 不需要代理 时可以不设置这三个参数
//ProxyPwd = "123456",//代理服务器密码 可选项
//ProxyUserName = "administrator",//代理服务器账户名 可选项
};
HttpResult result = http.GetHtml(item);
string html = result.Html;
Regex r = new Regex("(?<=sid=).*?(?=&)");
Match m = r.Match(html);
Console.WriteLine(names+"\t3gQQ的SID: " + m.Value.ToString());
string cookie = result.Cookie;
//get邮件w.mail.qq.com获取sid
http = new HttpHelper();
string getEmailURL = string.Format("http://w.mail.qq.com/cgi-bin/login?sid={0}&3G_UIN={1}&saveURL=0&3g_sid=empty&fun=from3g", m.Value.ToString(),names);
item = new HttpItem()
{
URL = getEmailURL,//URL这里都是测试 必需项
Method = "get",//URL 可选项 默认为Get
};
result = http.GetHtml(item);
html = result.Html;
r = new Regex("(?<=sid=).*?(?=&)");
m = r.Match(html);
Console.WriteLine(names + "\tEmail的SID: " + m.Value.ToString());
cookie = result.Cookie;
|