HttpWebRequest сообщение о проблеме после входа в систему - PullRequest
1 голос
/ 23 декабря 2011

Я создаю инструмент, который регистрируется на сайте, а затем публикует пост в блоге.

Все формы имеют тип контента "application / x-www-form-urlencoded"

Я использую следующий код для входа в систему:

private void btnSignOn_Click_1(System.Object sender, System.EventArgs e)
        {
            string strURL = "http://en.netlog.com/go/login";
            HttpWebRequest HWRequest = GetRequest(strURL);
            Parameters HWParameters = ReadResponse(HWRequest, strURL);

            foreach (Parameter p in HWParameters) {
                switch (p.Name) {
                    case "nickname":
                        p.Value = txtHalfID.Text;
                        break;
                    case "password":
                        p.Value = txtHalfPassword.Text;
                        break;
                }
            }

            HWRequest = PostRequest(strURL, HWParameters, encURL);
            GetResponse(HWRequest);
        }

Строка, которая была зашифрована и затем записана в поток, выглядит следующим образом:

action = login & target = -Lw_ & запомнить = ДА & псевдоним = mynickname & пароль = mypassword & q = & referrer = home & action = login & target = -Lw _ & nickname = mynickname & password = mypassword & запомнить = YES & netlogVersion = v6.00

(на сайте есть две формы входа, однамаленький вверху и один в середине страницы)

Далее я нажимаю кнопку, которая должна публиковать блог, я сохраняю файлы cookie в контейнере cookie и вижу, когда проверяю веб-запрос, чтомой профиль сохраняется в системе.

Код для поста блога почти такой же:

private void bntPostBlog_Click(object sender, EventArgs e)
        {
            string strURL = "http://en.netlog.com/go/manage/blog/view=add";
            HttpWebRequest HWRequest = GetRequest(strURL);
            Parameters HWParameters = ReadResponse(HWRequest, strURL);

            foreach (Parameter p in HWParameters) {
                p.Value = HttpUtility.UrlEncode(p.Value);
                switch (p.Name) {
                    case "title":
                        p.Value = txtTitle.Text;
                        break;
                    case "message":
                        p.Value = txtMsg.Text;
                        break;
                }
            }

            HWRequest = PostRequest(strURL, HWParameters, encURL);
            GetResponse(HWRequest);
        }

На этот раз строка выглядит так:

"д = & реферер = управление & название = testTitle и мнеssage = testMsg & action = __ button & unSavedContentWarning = + изменения + в + вашем + блоге + сообщение + еще не были сохранены +. & csrftoken_add = 3e16b204 & allow_comments = YES & allow_ratings = YES & netlogVersion = v6.00 "

*1026* * 2727проверьте ответ, и я попал в тот же экран «написать блог» без публикации блога.

Сначала я подумал, что проблема в кодировании строки, отсюда и дополнительная строка URLencode в клике поста блога.

Кто-нибудь узнает, что я делаю не так?Я не вижу разницы между постом в блоге и постом входа в систему.Однако работает только вход в систему.

Если вам нужно больше кода, я был бы рад показать его, я решил сохранить его просто, не публикуя все функции ..

Спасибо зазаранее!

...