Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
AlexanderWM
11 / 11 / 3
Регистрация: 16.10.2012
Сообщений: 139
1

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

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

Есть сайт в 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2014, 22:27
Ответы с готовыми решениями:

Как сохранить html-страницу в кодировке ANSI (сохраняет только в UTF-8)?
Добрый день! Нужно сохранить страницу в файл в кодировке ANSI. Если...

Как полностью получить страницу вк, если она динамически подгружается
Здраствуйте. Собственно пытаюсь написать программку для работы с вк. Основная...

Как оптимально распарсить большую HTML страницу и получить нужные данные
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html...

Загрузка DBF файла в нужной кодировке
Пытаюсь подключится к DBF фалу и получаю следующее исключение. "Дополнительные...

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

2
Psilon
Master of Orion
Эксперт .NET
6009 / 4859 / 902
Регистрация: 10.07.2011
Сообщений: 14,460
Записей в блоге: 5
Завершенные тесты: 4
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
Courage
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2014, 00:56

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

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru