Отправить более одного почтового запроса - PullRequest
3 голосов
/ 04 июля 2011

Я хочу отправить несколько запросов на сайт. Я искал в Google и получил этот код:

 class Program
{
    public static HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create("http://example.com/login.php");
    public static ASCIIEncoding encoding = new ASCIIEncoding();
    public static string postData = "";
    public static bool first = true;
    static void Main(string[] args)
    {
        string uname = "", pass = "", Final = "";

        while (1>0)
        {
            Console.WriteLine("Enter uname ,then password");
            uname = Console.ReadLine();
            pass = Console.ReadLine();
            if (uname == "0")
                break;
            Final = letstry(uname, pass);

            Console.WriteLine(Final);
            Console.WriteLine("Finish That");
        }
    }

    public static string letstry(string uname, string pass)
    {  
        postData = "uname=" + uname;
        postData += ("&pass=" + pass);
        byte[] data = encoding.GetBytes(postData);
        if (first)
        {
            HttpWReq.Method = "POST";
            HttpWReq.ContentType = "application/x-www-form-urlencoded";
            HttpWReq.ContentLength = data.Length;
            first = !first;
        }

        Stream newStream = HttpWReq.GetRequestStream();
        newStream.Write(data, 0, data.Length);
        newStream.Close();

        WebResponse resp = HttpWReq.GetResponse();
        StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
        return sr.ReadToEnd().Trim();
    }
}

Я получаю сообщение об ошибке, что соединение было закрыто (newstream). Почему я не могу использовать одно и то же соединение для отправки более одного запроса?

Единственная идея, о которой я могу подумать, это отправить поток var на letstry вместо создания newstream.

Я не эксперт, поэтому прошу прощения за любые ненужные ошибки.

Тывм за помощь:)

1 Ответ

3 голосов
/ 04 июля 2011

WebRequest предназначен для выполнения того, что он говорит: сделать один запрос. Если вы хотите сделать несколько запросов, просто создайте новый WebRequest каждый раз.

Если свойство KeepAlive равно true, запросы пытаются использовать одно и то же соединение, если это возможно. См. Общие сведения об управлении соединениями System.Net и ServicepointManager для получения дополнительной информации.

...