Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2015, 21:00   #1
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию Кодировка + отправка пост запроса

Код:
            string getUrl = "http://www.site.ru/index.php?app=core&module=global&section=login&do=process";
            string postData = String.Format("auth_key={0}&email={1}&pass={2}", "880ea6a14ea49e853634fbdc5015a024", "email", "123");
            HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create(getUrl);
            getRequest.CookieContainer = new CookieContainer();
            getRequest.CookieContainer.Add(cookies); //recover cookies First request
            getRequest.Method = WebRequestMethods.Http.Post;
            getRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 YaBrowser/14.12.2125.10034 Safari/537.36";
            getRequest.AllowWriteStreamBuffering = true;
            getRequest.ProtocolVersion = HttpVersion.Version11;
            getRequest.AllowAutoRedirect = true;
            getRequest.ContentType = "application/x-www-form-urlencoded";


            MessageBox.Show("Текст сообщения", "Заголовок сообщения", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

            byte[] byteArray = Encoding.ASCII.GetBytes(postData);
            getRequest.ContentLength = byteArray.Length;
            Stream newStream = getRequest.GetRequestStream(); //open connection
            newStream.Write(byteArray, 0, byteArray.Length); // Send the data.
            newStream.Close();

            HttpWebResponse getResponse = (HttpWebResponse)getRequest.GetResponse();
            using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
            {
                string sourceCode = sr.ReadToEnd();
            }
Программа читает эту строчку
Код:
       byte[] byteArray = Encoding.ASCII.GetBytes(postData);
как ошибка.

Я не знаю, не представляю что я должен получить. Какие данные должны быть на выходе после обработки Encoding....
Что тут вообще...?

byteArray.Length - тут считают длину массива? Для чего?
newStream.Write(byteArray, 0, byteArray.Length); - тут , что делается?

Как мне вообще просматривать массивы при выполнение кода. Неужели через MessageBox?
Изображения
Тип файла: jpg poLvtS4OPbg.jpg (107.6 Кб, 124 просмотров)

Последний раз редактировалось Predator199; 15.02.2015 в 21:03.
Predator199 вне форума Ответить с цитированием
Старый 15.02.2015, 21:11   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от Predator199 Посмотреть сообщение
Я не знаю, не представляю что я должен получить. Какие данные должны быть Как мне вообще просматривать массивы при выполнение кода. Неужели через MessageBox?
Запустите программу под отладкой. Отладчик - лучший друг программиста!
Streletz вне форума Ответить с цитированием
Старый 15.02.2015, 21:32   #3
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

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

У меня ошибка на Encoding.
String.Format("auth_key={0}&email={ 1}&pass={2}", "880ea6a14ea49e853634fbdc5015a0 24", "email", "123");

Данную строчку, через какую такую кодировку необходимо пропустить?

Что тут
Код:
 byte[] byteArray = Encoding.ASCII.GetBytes(postData);
должен на выходе получить.
byteArray, что будет содержать
byte[], что будет содержать*???
Вот текст ошибки
Имя "Encoding" отсутствует в текущем контексте
Как ее исправить?

Код:
    public partial class Form1 : Form
    {
        public string Encoding;
Это нужно добавить, неее?




Тогда это су*** на "ASCI" ругается...

Дописал
using System.Text.Encoding;
Почему не помогло?

Код:
using System;
using System.IO;
using System.Data;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Diagnostics;
using System.Threading;
using System.Linq;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Linq;
using System.Text.Encoding;


namespace tslight
{


    public partial class Form1 : Form
    {
        public string AppDir; // путь к папке приложения
        public char PointChar;
     

        public Form1()
        {
            // определение папки, в которой запущена программа
            string path = Application.ExecutablePath;
            AppDir = path.Substring(0, path.LastIndexOf('\\') + 1);

            // The InitializeComponent() call is required for Windows Forms designer support.
            InitializeComponent();

            // определение разделителя в числах на компьютере (запятая или точка)
            PointChar = ',';
            string str = (1.2).ToString();
            if (str.IndexOf('.') > 0) PointChar = '.';

        }


        private void Form1Load(object sender, EventArgs e)
        {
         



        }


        void site_aut_Click(object sender, EventArgs e)
        {


            CookieCollection cookies = new CookieCollection();
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.site.ru");
            request.CookieContainer = new CookieContainer();
            request.CookieContainer.Add(cookies);

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            cookies = response.Cookies;


            string getUrl = "http://www.site.ru/index.php?app=core&module=global&section=login&do=process";

            string postData = String.Format("auth_key={0}&email={1}&pass={2}", "880ea6a14ea49e853634fbdc5015a024", "name", "123");
            HttpWebRequest getRequest = (HttpWebRequest)WebRequest.Create(getUrl);
            getRequest.CookieContainer = new CookieContainer();
            getRequest.CookieContainer.Add(cookies); //recover cookies First request
            getRequest.Method = WebRequestMethods.Http.Post;
            getRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 YaBrowser/14.12.2125.10034 Safari/537.36";
            getRequest.AllowWriteStreamBuffering = true;
            getRequest.ProtocolVersion = HttpVersion.Version11;
            getRequest.AllowAutoRedirect = true;
            getRequest.ContentType = "application/x-www-form-urlencoded";


    
            byte[] byteArray = Encoding.ASCI.GetBytes(postData);
            getRequest.ContentLength = byteArray.Length;
            Stream newStream = getRequest.GetRequestStream(); //open connection
            newStream.Write(byteArray, 0, byteArray.Length); // Send the data.
            newStream.Close();

            HttpWebResponse getResponse = (HttpWebResponse)getRequest.GetResponse();
            using (StreamReader sr = new StreamReader(getResponse.GetResponseStream()))
            {
                string sourceCode = sr.ReadToEnd();
            }

        }

    }
}
Бл*** да как сделать так, чтобы четовка Encoding.ASCI заработала. Как твой отладчик мне поможет????

Последний раз редактировалось Predator199; 15.02.2015 в 22:09.
Predator199 вне форума Ответить с цитированием
Старый 15.02.2015, 22:33   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от Predator199 Посмотреть сообщение
Запустил я в очередной раз программу под отладкой, и, что я должен увидеть? Интерфейс программы? Дак я его и так вижу, возможность нажать на кнопку, дак я и так нажимаю....
Цитата:
Сообщение от Predator199 Посмотреть сообщение
Как твой отладчик мне поможет????
Если смотреть только на программу и не обращать никакого внимания на то, что показывает в соём интерфейсе IDE в режиме отладки, то от отладчика, конечно, вряд ли будет толк.
Цитата:
Сообщение от Predator199 Посмотреть сообщение
Encoding.ASCI
Это работать не будет, а вот Encoding.ASCII, как правило, прекрасно работает. В 1м посте у Вас было написано правильно.
Только что запустил Ваш код из 2го Вашего поста в Visual Studio (поправив с учётом высказанного). Проблем с Encoding нет.
Сдаётся, что Вы что-то не договариваете. Какую версию .NET и VisualStudio используете?
Streletz вне форума Ответить с цитированием
Старый 15.02.2015, 22:35   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Predator199 Посмотреть сообщение
Запустил я в очередной раз программу под отладкой, и, что я должен увидеть?
http://msdn.microsoft.com/en-us/library/y740d9d3.aspx
http://www.codeproject.com/Articles/...tudio-A-Beginn
http://www.dotnetperls.com/debugging
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка пост запроса snip4ik Работа с сетью в Delphi 5 10.03.2013 04:31
отправка не стандартного пост запроса onecent Работа с сетью в Delphi 8 25.11.2011 19:57
Как работать с tStream для отправки пост запроса? Айдар Работа с сетью в Delphi 2 04.01.2011 20:34
Неправильная кодировка при пост запросе RIO Работа с сетью в Delphi 1 14.11.2010 07:02
Отправка пост параметров на страницу! AquaKlaster Работа с сетью в Delphi 2 14.05.2009 16:45