C#---HttpWebRequest+HttpWebResponse实现登录人人网
1.Form做成这样:
2.添加新建项HttpHelper.cs
using System; using System.IO; using System.Net; using System.Text; using System.Windows.Forms; using System.Threading; namespace XIN_001 { class HttpHelper { private static string accept = "*/*"; private static CookieContainer cc = new CookieContainer(); private static string contentType = "application/x-www-form-urlencoded"; private static Encoding encoding = Encoding.GetEncoding("utf-8"); private static string userAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET4.0C; .NET4.0E)"; public static string GetHtml(string url, CookieContainer cookieContainer, string referer, string postData, bool isPost) { HttpWebRequest request = null; HttpWebResponse response = null; try { request = (HttpWebRequest)WebRequest.Create(url); request.CookieContainer = cookieContainer; request.ContentType = contentType; if (!string.IsNullOrEmpty(referer)) request.Referer = referer; else request.Referer = url; request.Accept = accept; request.UserAgent = userAgent; request.Method = isPost ? "POST" : "GET"; if (!string.IsNullOrEmpty(postData)) { byte[] bytes = Encoding.Default.GetBytes(postData); request.ContentLength = bytes.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(bytes, 0, bytes.Length); requestStream.Close(); } response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream, encoding); string str = reader.ReadToEnd(); reader.Close(); responseStream.Close(); response.Close(); return str; } catch(Exception Ex) { MessageBox.Show(Ex.Message.ToString()); throw Ex; } } public static string GetHtml(string url) { return GetHtml(url, cc, null, null, false); } public static string GetHtml(string url,string postData,bool isPost) { return GetHtml(url, cc, null, postData, isPost); } public static string GetHtml(string url, string referer) { return GetHtml(url, cc, referer, null, false); } public static void Delay() { Random ran = new Random(); int ranKey = ran.Next(100, 900); Thread.Sleep(ranKey); } } }
3.Form代码:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using XIN_001; using System.IO; namespace LoginRenren { public partial class FrmLoginRenren : Form { public FrmLoginRenren() { InitializeComponent(); } private static string html = ""; private static string url = "http://www.renren.com/PLogin.do"; private void btnLogin_Click(object sender, EventArgs e) { string postData = "email=" + txtUserName.Text + "&icode=&origURL=http%3A%2F%2Fwww.renren.com%2Fhome&domain=renren.com&key_id=1&captcha_type=web_login&password=" + txtPwd.Text; html = HttpHelper.GetHtml(url, postData, true); LogFile("D:\\LoginRenren.txt", html); } private bool LogFile(string LogFileName, string LogText) { if (File.Exists(LogFileName)) { StreamWriter LogStreamWriter = new StreamWriter(LogFileName, true, Encoding.Default); LogStreamWriter.WriteLine(LogText); LogStreamWriter.Close(); return true; } else { try { FileStream LogFileStream = new FileStream(LogFileName, FileMode.CreateNew); LogFileStream.Close(); StreamWriter LogStreamWriter = new StreamWriter(LogFileName, true, Encoding.Default); LogStreamWriter.WriteLine(LogText); LogStreamWriter.Close(); return true; } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); return false; } } } } }
如果成功登录人人网,本程序将在D盘根目录下生成一个LoginRenren.txt文件,里面是登录成功后的好友新鲜事页面的源文件。
附登录人人网源代码【VS2010解决方案】:LoginRenren.rar