同一帖子要求不同的回复?

时间:2016-06-10 09:13:10

标签: .net

我正在开发一个小应用程序,用来对我的朋友网站验证用户,让他们在登录后做几件事。如果我使用hurl.it发送邮件请求,我会暂时移动302这是我想要的,因为它意味着用户凭据是正确的,但是当我在vb.net中发送帖子请求时,尽管使用了完全相同的凭据和参数,但我还是200了吗?

    Dim request As WebRequest = WebRequest.Create("")
    request.Method = "POST"
    Dim postData As String = ""
    Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
    request.ContentType = "application/x-www-form-urlencoded"
    request.ContentLength = byteArray.Length
    Dim dataStream As Stream = request.GetRequestStream()
    dataStream.Write(byteArray, 0, byteArray.Length)
    dataStream.Close()
    Dim response As WebResponse = request.GetResponse()
    Dim responseData As String = response.Headers.Get("Location")
    Console.WriteLine(CType(response, HttpWebResponse).StatusDescription)
    dataStream = response.GetResponseStream()
    Dim reader As New StreamReader(dataStream)
    Dim responseFromServer As String = reader.ReadToEnd()
    Console.WriteLine(responseFromServer)
    reader.Close()
    dataStream.Close()
    response.Close()

我问的是为什么hurl.it会提供我想要实现的302响应,但我的.NET帖子请求得到200 OK响应

1 个答案:

答案 0 :(得分:1)

根据这个:https://en.wikipedia.org/wiki/HTTP_302 302用于重定向,即浏览器会自动移动到302指向的URL。默认情况下,HttpWebRequest类也会这样做。

但是可以配置,请看这里: https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest(v=vs.110).aspx

我希望设置AllowAutoRedirect=False可以提供您预期的行为。

引用https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.allowautoredirect(v=vs.110).aspx

  

如果请求应自动遵循重定向响应,则为true   来自互联网资源;否则,错误。默认值为   true ....如果AllowAutoRedirect设置为false,则所有响应都设置为false   从300到399的HTTP状态代码将返回给应用程序。