使用HttpWebrequest时处理StatusCode == 302 - c#

时间:2011-07-29 22:18:10

标签: c#-3.0

我有一个Windows应用程序,我正在尝试构建模拟上传到Web应用程序。该项目在C#3.0中。

使用Fiddler时,我可以看到以下内容

/登录页面 - 200代码

输入pwd / uname

/主页 - 302代码 /主页 - 200代码

/上传页面[此页面包含简单的多部分表单帖子,用户可以选择最多2个文件上传] - 200个代码

/ fileprocessed page - 302 code / fileprocessed page - 200 code

当我使用HttpWebrequest和webresponse对象时,我得到了

/登录页面 - 200代码

输入pwd / uname

/主页 - 200代码

/上传页面[此页面包含简单的多部分表单帖子,用户可以选择最多2个文件上传] - 200个代码

/ fileprocessed page - 302 code

我确实将SetAutoRedirect设为true

我的代码是

                Stream requestStream = request.GetRequestStream();
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Write(buffer, 0, buffer.Length);
                FileStream stream2 = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                byte[] buffer = new byte[0x1000];
                int count = 0;
                while ((count = stream2.Read(buffer, 0, buffer.Length)) != 0)
                {
                    requestStream.Write(buffer, 0, count);
                }
                bytes = Encoding.ASCII.GetBytes("\r\n--" + str2 + "--\r\n");
                requestStream.Write(bytes, 0, bytes.Length);
                requestStream.Close();
                stream.Close();
                HttpWebResponse response = request.GetResponse() as HttpWebResponse;
                if(response.StatusCode == HttpStatusCode.Found)
                {
                    string newURL = response.Headers["Location"];
                }

如何避免302错误或如何解决错误,其中我可以成功发布表单以模拟上传

1 个答案:

答案 0 :(得分:1)

我有一个类似的案例,当我预计会返回200个时,我收到了302个状态代码(比如在Fiddle或Firebug:net标签中)。我能够通过向HttpWebResponse

提供用户代理规范来解决问题
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0";