2014-09-10 15:00:30
 class ThuVienPhapLuatLogin
    {
        static void Main(string[] args)
        {
            HttpPostParam[] httpparams = {
                                new HttpPostParam("UserName", "lif3vil"),
                                new HttpPostParam("Password", "cuchichchim"),
                                new HttpPostParam("submit","submit-value"), 
                             };
            string response = PostTrivialData(new Uri("http://m.thuvienphapluat.vn/Member?ReturnUrl=http://m.thuvienphapluat.vn"), httpparams);
        }
 
        private struct HttpPostParam
        {
            private string _key;
            private string _value;
 
            public string Key { get { return HttpUtility.UrlEncode(this._key); } set { this._key = value; } }
            public string Value { get { return HttpUtility.UrlEncode(this._value); } set { this._value = value; } }
 
            public HttpPostParam(string key, string value)
            {
                this._key = key;
                this._value = value;
            }
        };
 
        private static string PostTrivialData(Uri page, HttpPostParam[] parameters)
        {
            string pageResponse = string.Empty;
            try
            {
                var request = (HttpWebRequest)WebRequest.Create(page); //create the initial request.
                request.UserAgent =
                    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.103 Safari/537.36";
                request.Method = WebRequestMethods.Http.Post; //set the method
                request.AllowAutoRedirect = true; //couple of settings I personally prefer.
                request.KeepAlive = true;
                request.ContentType = "application/x-www-form-urlencoded";
                request.Referer = "http://m.thuvienphapluat.vn/Member?ReturnUrl=http://m.thuvienphapluat.vn";
                request.CookieContainer = new CookieContainer();
 
                //create the post data.
                byte[] bData = Encoding.UTF8.GetBytes(string.Join("&", Array.ConvertAll(parameters, kvp => string.Format("{0}={1}", kvp.Key, kvp.Value))));
                using (var reqStream = request.GetRequestStream())
                    reqStream.Write(bData, 0, bData.Length); //write the data to the request.
 
                using (var response = (HttpWebResponse)request.GetResponse()) //attempt to get the response.
                    if (response.StatusCode == HttpStatusCode.OK || response.StatusCode == HttpStatusCode.NotModified) //check for a valid status (should only return 200 if successful)
                        using (var reader = new System.IO.StreamReader(response.GetResponseStream()))
                            pageResponse = reader.ReadToEnd();
            }
            catch (Exception e)
            {
                /* todo: any error handling, for my use case failing gracefully was all that was needed. */
            }
            return pageResponse;
        }
    }
Invalid Email or Password