Skip to main content
 首页 » 编程设计

c#之WebRequest 获取不到请求流

2024年02月24日33开发

我正在尝试制作一个为我注册帐户的 HttpWebRequest。 我正在使用一个循环来注册新帐户,只有一件事发生变化,即用户名。 但由于某种原因它只工作两次,第三次它会到达调用函数“webRequest.GetRequestStream();”的特定行。它永远不会完成,它不会抛出错误或任何东西。 这是我的第一个 HttpWebRequest,它很乱。 对于想知道的人,值是一个字符串,其中包含注册“值”。前 2 次确实注册了帐户,所以它确实有效。

    public static HttpWebRequest Get() 
    { 
        HttpWebRequest webRequest = WebRequest.Create("http://87.255.55.218/register") as HttpWebRequest; 
        webRequest.Method = "POST"; 
        webRequest.Host = "87.255.55.218"; 
        webRequest.UserAgent = "Hacker"; 
        webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
        webRequest.Referer = "http://yougothacked.com"; 
        webRequest.ContentType = "application/x-www-form-urlencoded"; 
 
        webRequest.Headers.Add(HttpRequestHeader.KeepAlive, "115"); 
        return webRequest; 
    } 
 
    public static void Register(string username) 
    { 
        string value = Value.Replace("replace", username); 
        WebRequest webRequest = Get(); 
        webRequest.ContentLength = value.Length; 
        Thread.Sleep(50); 
        Stream reqStream = webRequest.GetRequestStream(); 
 
        reqStream.Write(Encoding.ASCII.GetBytes(value), 0, value.Length); 
        Thread.Sleep(50); 
        reqStream.Flush(); 
        reqStream.Close(); 
        reqStream.Dispose(); 
    } 

有什么问题吗?

请您参考如下方法:

我强烈怀疑问题出在您未显示的某些代码中 - 也就是说,当您使用请求时,您没有正确处理响应. (就像您应该将使用请求流的代码放在 using block 中一样。)

如果您不处理响应,该响应将保持与服务器的连接,直到终结器释放它。与各个服务器的连接被合并。

简而言之:确保将响应放在 using block 中,如下所示:

using (WebResponse response = req.GetResponse()) 
{ 
    ... 
} 

而且我怀疑您会发现无论您提出多少请求,它都能正常工作。

另一方面,按照 Darin 的建议使用 WebClient 可能会让您的生活更简单。