Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
11 / 11 / 3
Регистрация: 16.10.2012
Сообщений: 139
1
.NET 4.x

Как получить страницу по GET в нужной кодировке

19.03.2014, 22:27. Показов 1877. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть сайт в win-1251, с которым нужно плотно работать. Отправлять POST и GET запросы, сохранять текущие куки. Помогите: 1). Разобраться с кодировками. Как правильно работать с 1251? Нужно будет отправлять POST запрос на получение формы. 2). Как получить страницу по GET в нужной кодировке
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    public static CookieCollection cookie;
 
        public static void Log(string data)
        {
            StreamWriter writer = new StreamWriter("data.html");
            writer.Write(data);
            writer.Close();
        
        }
        public static string POST(string Url, string Data)
        {
            try
            {
                Log("POST:" + Data);
                System.Net.WebRequest req = System.Net.WebRequest.Create(Url);
                req.Method = "POST";
                req.Timeout = 10000;
                req.ContentType = "application/x-www-form-urlencoded";
                        
                byte[] sentData = Encoding.GetEncoding(1251).GetBytes(Data);
                req.ContentLength = sentData.Length;
                System.IO.Stream sendStream = req.GetRequestStream();
                sendStream.Write(sentData, 0, sentData.Length);
                sendStream.Close();
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();
                cookie = res.Cookies;//Сохраняем Cookie
                System.IO.Stream ReceiveStream = res.GetResponseStream();
                Console.WriteLine(res.Headers.ToString());
               System.IO.StreamReader sr = new System.IO.StreamReader(ReceiveStream, Encoding.UTF8);
                //System.IO.StreamReader sr = new System.IO.StreamReader(ReceiveStream, Encoding.GetEncoding(1251));
                String Out = sr.ReadToEnd();
                sr.Close();
                return Out;
            }
            catch (Exception error)
            {
                Log("Ошибка: " + error + ". Очередная попытка!");
                return POST(Url, Data);
            }
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2014, 22:27
Ответы с готовыми решениями:

Как вывести из БД текст в нужной кодировке ?
как вывести из БД в нормальной кодировке ? в php прописал mysql_query("SET NAMES utf8"); ...

Как вывести информацию в нужной кодировке
Здравствуйте дорогие Форумчане) у меня к вам вопрос) начал я изучать flat assembler начал с обычных...

Как сохранять через fwrite в нужной кодировке?
Как сохранять через fwrite в нужной кодировке?

Как записать данные в файл в нужной кодировке
В общем как не пытаюсь выгрузить данные в csv из List<string> мучаюсь с кодировкой. Через excel...

2
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
19.03.2014, 23:01 2
AlexanderWM, ну вполне рабочий код. Можете попробовать использовать похожий такой:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
HttpWebRequest web_request = (HttpWebRequest)HttpWebRequest.Create("http://site.ru/index.php");
                        web_request.Method = "POST";
                        web_request.AllowAutoRedirect = false;
                        web_request.ContentType = "application/x-www-form-urlencoded";
                        web_request.CookieContainer = tw_cookie;
 
                        string packet = "test_token=" + test_token +
                                        "&username=" + tw_login +
                                        "&password=" + tw_password;
 
                        Encoding w1251Encoding = Encoding.GetEncoding(1251);
 
                        byte[] bytes = w1251Encoding.GetBytes(packet); 
                        web_request.ContentLength = bytes.Length;
                        web_request.GetRequestStream().Write(bytes, 0, bytes.Length);
 
                        HttpWebResponse web_response = (HttpWebResponse)web_request.GetResponse();
                        string html = new StreamReader(web_response.GetResponseStream()).ReadToEnd();
за исключением тотальной утечки памяти должно работать.
1
145 / 45 / 16
Регистрация: 10.10.2013
Сообщений: 110
20.03.2014, 00:56 3
Цитата Сообщение от AlexanderWM Посмотреть сообщение
Как получить страницу по GET в нужной кодировке
заголовок AcceptCharset позволяет указать желаемую кодировку для ответа на запрос
C#
1
  req.Headers.Add(HttpRequestHeader.AcceptCharset, "windows-1251,utf-8;q=0.7,*;q=0.7");
1
20.03.2014, 00:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.03.2014, 00:56
Помогаю со студенческими работами здесь

Как с OpenFileDialog сохранять файлы в нужной кодировке?
Делаю так: saveFileDialog1.Filter = "Текстовые файлы (*.txt)|*.txt"; //...

Как отобразить строку из DBF файла в нужной кодировке?
есть дбф файл с данными в кодировке Windows1251 (это я так предполагаю что в 1251, потому что...

Как в нужной кодировке, извлекать данные из базы, выводить на страницы, посылать по e-mail?
Кто подскажет как в нужной кодировке, извлекать данные из базы, выводить на страницы, посылать по...

Как Загрузить страницу в DOS кодировке
Отчет готовится в досовской программе.Потом загружается в окне броузера IE. Как сделать чтоб эта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru