在一个页面通过post提交数据,中间有参数的传递,如何获得请求页面的源码?哪位大虾知道。

解决方案 »

  1.   

    WebClient
    http://aspxboy.com/private/271/default.aspx
      

  2.   

    httpwebrequest
    httpwebresponse
    网上搜一下,很多
      

  3.   

            protected string GetPageByPost(string url, string postData)
            {
                int retryCount = 0;
            Retry:            Stream outstream = null;
                Stream instream = null;
                StreamReader sr = null;
                HttpWebResponse response = null;
                HttpWebRequest request = null;
                byte[] data = encoding.GetBytes(postData);
                try
                {
                    request = WebRequest.Create(url) as HttpWebRequest;
                    request.AllowAutoRedirect = true;
                    request.Method = HttpMethod.POST.ToString();
                    request.ContentType = "application/x-www-form-urlencoded";
                    RequestCachePolicy cp = new RequestCachePolicy(
                        RequestCacheLevel.BypassCache);
                    request.CachePolicy = cp;
                    request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)";
                    request.ContentLength = data.Length;
                    request.Timeout = 20000;
                    request.Headers.Add("Accept-Language", "en-us");
                    request.KeepAlive = false;                outstream = request.GetRequestStream();
                    outstream.Write(data, 0, data.Length);
                    outstream.Close();
                    //发送请求并获取相应回应数据 
                    response = request.GetResponse() as HttpWebResponse;
                    instream = response.GetResponseStream();
                    sr = new StreamReader(instream, encoding);
                    string content = sr.ReadToEnd();
                    return content;
                }            catch (Exception ex)
                {
                    retryCount++;
                    if (retryCount <= 20)
                        goto Retry;
                    Console.WriteLine(string.Format("访问网页{0}失败!\r\n{1}\r\n\r\n{2}", url, ex.Message, postData));
                    throw ex;            }        }这个就是post数据的得到方式,post参数你自己写。我就是用这个写的,没问题
      

  4.   

    但我现在不知道它的参数名啊,不需要吗?并且你这个应该是根据url来的,如果直接这样提交过去,它是不带参数的情况啊!
      

  5.   

    哪位知道上面的encoding和HttpMethod从哪里来?
      

  6.   

    看不太明白楼主的需求,获取某个网页提交过来的数据是一码事,获取某个网页的源码又是另外一码事,
    你究竟是要做哪件还是两件都要做?
    第一件事 用Request.form就可以得到提交的参数集合了,第二件用httpwebrequest对象可以获取到源码。
      

  7.   

    意思是不是要请求的参数?
    用sniffer pro来抓包?
      

  8.   

    encoding 就是一个变量,代表你要访问的页面的编码方式,HttpMethod 这里要说明就是判断是否是post方式,这两个都是可以不要的。