模拟完整的帖子请求

时间:2012-11-23 18:57:29

标签: c# post webclient

我正在尝试使用WebClient模拟一个帖子请求;但是,当使用Firefox登录并使用firebug调试请求时,我发现在POST请求之后它会自动执行一些GET请求,而在使用我的代码时只执行POST请求

我的代码

//Handler is an overridden WebClient Class
        private async Task<byte[]> Post(string uri, string[] data)
        {
            var postData = new NameValueCollection();

            foreach (var info in data.Select(var => var.Split('=')))
            {
                postData.Add(info[0], info[1]);
            }

            return await Handler.UploadValuesTaskAsync(new Uri(uri), postData);
        }

1 个答案:

答案 0 :(得分:1)

我知道这不是你要求的,而是它在VB中,但希望它可以帮助你指明正确的方向。这是我用来在我们的一个网站上发布帖子的请求。它适用于模拟POST数据,希望您可以将其中的一部分合并到您正在做的事情中。

   Dim postData As String = String.Format("RedirectLocation=RequestMethod=&username={0}&password={1}", _username, _password)

   Dim _loginRequest As HttpWebRequest = WebRequest.Create(loginurl)

           With _loginRequest
                .Method = "POST"
                .ContentLength = postData.Length
                .ContentType = "application/x-www-form-urlencoded"                        
                .KeepAlive = True
                .AllowAutoRedirect = False

                .CookieContainer =  New CookieContainer

                Using writer As New StreamWriter(.GetRequestStream)
                    writer.Write(postData)
                End Using
                .Timeout = tsTimeOut.TotalMilliseconds
                _loginResponse = .GetResponse()
            End With