我今天发现HttpWebRequest 可以用自动登陆网站 什么的
我不怎么用 请求各位给我几个例子 让我开悟开悟!3Q3Q

解决方案 »

  1.   

            /// <summary>
            /// 通过POST方式发送数据到web页面
            /// </summary>
            /// <param name="Url">url</param>
            /// <param name="postDataStr">Post数据</param>
            /// <param name="cookie">Cookie容器</param>
            /// <returns>获取的html页面字符串</returns>
            public string SendDataByPost(string Url, string postDataStr, CookieContainer cookie)
            {
                StringBuilder retString = new StringBuilder("");
                HttpWebRequest request;
                string siteencoding = m_spider.GetEncoding();
                try
                {
                    request = (HttpWebRequest)WebRequest.Create(Url);
                    string line = "";
                    if (cookie.Count != 0)
                    {
                        request.CookieContainer = cookie;
                    }                if (postDataStr != "")
                    {
                        // 当post数据不为空时,明确采用post方法,取得返回数据
                        request.Method = "POST";
                        request.ContentType = "application/x-www-form-urlencoded";
                        request.ContentLength = Encoding.GetEncoding(siteencoding).GetBytes(postDataStr).Length;
                        Stream myRequestStream = request.GetRequestStream();                    StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding(siteencoding));
                        myStreamWriter.Write(postDataStr);
                        myStreamWriter.Flush();
                        myStreamWriter.Close();
                    }                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                    Stream myResponseStream = response.GetResponseStream();
                    if (!response.ContentType.ToLower().StartsWith("text/"))
                    {
    //                    SaveBinaryFile(response);
                        return null;
                    }
                    StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding(siteencoding));
                    while ((line = myStreamReader.ReadLine()) != null)
                    {
                        retString.AppendLine(line);
                    }                myStreamReader.Close();
                    myResponseStream.Close();
                }
                catch (WebException e)
                {
                    Console.WriteLine(e.Message);
                    Stream se = e.Response.GetResponseStream();
                    StreamReader ss = new StreamReader(se, Encoding.GetEncoding(siteencoding));
                    string sss = ss.ReadToEnd();
                }            return retString.ToString();
            }