Большой Воронежский Форум
» Программирование>Не могу составить верный запрос (C#)
Мамед 12:20 11.10.2009
Доброго времени суток всем. Хочу написать программку для упрощенного получения бесплатного пароля для socks2http. Дело в том, что приходится каждый день лезть на сайт, вводить мыло и код с картинки, что, честно говоря, надоедает рано или поздно. Начал писать черновой вариант (лишь бы работал для начала). Язык: C#. Приложение с запросами и ответами пишу впервые отсюда и понятно, что вопросов куча и со всеми справиться не смог.

Код программы: (форма+текстовое поле+поле для картинки+кнопка)
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.IO;
using System.Net;
using System.Text;
using System.Windows.Forms;

namespace WinF
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        string z;

        private void Form1_Load(object sender, EventArgs e)
        {
            WebRequest request = WebRequest.Create("http://api.recaptcha.net/challenge?k=6Lc-tQAAAAAAAMP8b0ayxvd30YAQttDHHrXdAkVt");
            WebRequest.DefaultWebProxy = new WebProxy("cache.vsi.ru", 3128);
            request.Method = "GET";
            Stream str = request.GetResponse().GetResponseStream();
            StreamReader sr = new StreamReader(str);
            string href = sr.ReadToEnd();
            z = href.Substring(41, 286);
            sr.Close();
            str.Close();
            pictureBox1.ImageLocation = "http://api.recaptcha.net/image?c=" + z;
            pictureBox1.Load();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            HttpWebRequest requesta = (HttpWebRequest)
                WebRequest.Create("http://www.totalrc.net/main_ref.jsp?menu=13");
            requesta.ServicePoint.Expect100Continue = false;
            requesta.Method = "POST";
            requesta.Accept = "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1";
            requesta.Referer = "http://www.totalrc.net/main_ref.jsp?menu=13";
            requesta.ContentType = "application/x-www-form-urlencoded";
            requesta.UserAgent = "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.2.15 Version/10.00";
            requesta.CookieContainer = new CookieContainer();
            Cookie ck = new Cookie();
            ck.Value = "JSESSIONID=0FBD7A525A3BA93AC32FD9D09DB68D24";
            requesta.CookieContainer.Add(ck);
            StreamWriter worth = new StreamWriter(requesta.GetRequestStream());
            worth.Write("email=soldier%40box.vsi.ru&recaptcha_challenge_filed=" + z + "&recaptcha_response_field=" + textBox1.Text.Replace(" ", "+") + "&mysubmit=Submit");
            worth.Close();
            HttpWebResponse resp = (HttpWebResponse)
                requesta.GetResponse();
            StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding(28591));
            string page = sr.ReadToEnd();
            sr.Close();
            MessageBox.Show("Ура", "Ура");
        }
    }
}
Проблема заключается в том, что первый запрос при загрузке формы срабатывает нормально, картинка грузится. А вот второй запрос почему-то возвращает страницу почти 1 в 1 как при использовании браузера, но только без результатов (о том, что письмо с кодом мне выслали или код введен неверно), соответственно, и никакого письма мне не приходит. В чем может быть проблема? Подумал, может cookies требуются и попробовал прикрепить их, но, к сожалению как бы не крепил (сначала посмотрел способы как в мсдн, потом погуглил) компилятор постоянно выдают различного рода ошибки. Просьба, помочь с cookies и подсказать, что же не так в обработке нажатия кнопки.
Вверх