2016-06-10 31 views
2

我正在开发一个小应用程序,它对我的​​朋友网站进行身份验证,并允许他们在登录后执行几件事情,如果我使用hurl.it发送发布请求,我会临时移动一个302,这是我想要的,因为它意味着用户凭证是正确的,但是当我在vb.net发送一个post请求时,尽管使用了完全相同的凭证和参数,但我仍然可以使用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() 

什么IM问的是为什么hurl.it提供302回应,我想实现,但我的.NET post请求得到一个200 OK响应

回答

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 ....如果AllowAutoRedirect设置为false,则将所有带有从0到300的HTTP状态代码的响应返回给应用程序。

+0

非常感谢!永远不知道AllowAutoRedirect存在! – user3701006

相关问题