Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сделать пост запрос. длинный с русскими буквами. 
:(
    Опции темы
burakov
Дата 21.11.2012, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



Добрый день.

необходимо запостить POST запросом данные на форум.

подсмотрел в андипаросе.
контент шифруется 

вот таким вот образом.

SLAVA2+%C4%E0+%ED%E5+%F1%EA%E0%E6%E8%2C+%EF%F0%EE%F4%E8%EB%E0%EA%F2%E8%EA%E0+%EE%F7%E5%ED%FC+%EF%EE%EB%E5%E7%ED%E0%FF+%E2%E5%F9%FC.+%C4%E0%E2%E0%E9+%EE%F2%E2%EB%E5%F7%B8%ED%ED%EE+%EF%EE%E4%F3%EC%E0%E5%EC.+%C2%EE%F2+%ED%E5+%E1%FB%EB%EE+%E1%FB+%E2%EE%E7%EC%EE%E6%ED%EE%F1%F2%E8+%F3%E3%ED%E0%F2%FC+%F2%E0%F7%EA%F3+%E2+%E4%F0%F3%E3%EE%EC+%E3%EE%F0%EE%E4%E5+%E8+%F1%EF%EE%EA%EE%E9%ED%EE+%ED%E0+%ED%E5%E9+%EA

попробовал на нем URI::Escape
расшифровало с плюсами отчего то

SLAVA2+Да+не+скажи,+профилактика+очень+полезная+вещь.+Давай+отвлечённо....

Моя задача вот так зашифровать текст в кодировке cp1251 и отправить.

делаю как обычно, всегда полчалось (и в этом случае получается, если строку обрезать до 1000 символов).
но мне нужно отправить больше.

вот вопрос, что за шифрация такая.? какой функцией можно преобразовать строку в cp1251 в нечто такое с плюсами , чтобы потом подставить это дело в пост запрос?

делал $str = uri_escape ($str);
не помогает (не постит).

в чем тут дело? как зашифровать точно также? 
(uri_escape как то по другому визуально шифрует - без плюсов .. ну и еще какие то различия на глаз есть)


СПАСИБО.



Код

    my $method = 'POST'; 
    my $url = 'http://test4.ru/post.php';
    # my $postdata = 'action=addnew&forum='.$forum_number.'&topictitle='.$topictitle.'&description=&color=black&size=12&inpost='.$inpost.'&showsmiles=yes&html=no&submit=%CE%F2%EF%F0%E0%E2%E8%F2%FC';
    my $postdata = 'action=addnew&forum='.$forum_number.'&topictitle='.$topictitle.'&description=&color=black&size=12&inpost='.$inpost.'&showsmiles=yes&html=no&submit=';
    push (@{ $lwp->requests_redirectable }, 'POST');
    my $req = HTTP::Request -> new (
    'POST' => $url,
        [
            'User-Agent' => 'Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0',
            'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
            'Accept-Language' => 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
            'Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.7',
            'Referer' => 'http://test4.ru/register.php?PHPSESSID='.$sid,
            'Content-Type' => 'application/x-www-form-urlencoded',
            'Cookie' => 'PHPSESSID='.$sid.'; lastvisit='.time(),
        ]
    );

    $req -> content ($postdata);
    my $res = $lwp -> request ($req); 




--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Arantir
Дата 22.11.2012, 03:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: нет
Всего: 55



Попробуйте закодировать в base64. Очень распространенный способ для устранения проблем с кодировками.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
burakov
Дата 22.11.2012, 08:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



Я попробую.. но я же как бы LWP посывалю запрос на сервер, то есть он должен быть в таком виде, чтобы сервер его расшифровал. (то есть как бы строкой вида

SLAVA2+%C4%E0+%ED%E5+%F1%EA%E0%E6%E8%2C+%EF%F0%EE%F4%E8%EB%E0%EA%F2%E8%EA%E0+%EE%F7%E5%ED%FC+%EF%EE%EB%E5%E7%ED%E0%FF+%E2%E5%F9%FC.+%C4%E0%E2%E0%E9+%EE%F2%E2%EB%E5%F7%B8%ED%ED%EE+%EF%EE%E4%F3%EC%E0%E5%EC.+%C2%EE%F2+%ED%E5+%E1%FB%EB%EE+%E1%FB+%E2%EE%E7%EC%EE%E6%ED%EE%F1%F2%E8+%F3%E3%ED%E0%F2%FC+%F2%E0%F7%EA%F3+%E2+%E4%F0%F3%E3%EE%EC+%E3%EE%F0%EE%E4%E5+%E8+%F1%EF%EE

)

иначе.. может быть и не расшифрует?
что это за шифрация такая. 
дело в том, что я закодировал (попробовал) URI::Escape.. номер не прошел. пост не опубликовался. 
то есть нужно точно сказать. в чем мне его и чем кодировать?


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
ginnie
Дата 22.11.2012, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 4
Всего: 49



burakov, возможно этот фрагмент поможет  smile 

Код

use HTTP::Request::Common;

my $url = 'http://test4.ru/post.php';
my $sid = '10000000000000000000';
my $req = POST $url,
    'User-Agent' => 'Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0',
    Accept => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language' => 'ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3',
    'Accept-Charset' => 'windows-1251,utf-8;q=0.7,*;q=0.7',
    Referer => 'http://test4.ru/register.php?PHPSESSID='.$sid,
    Cookie => 'PHPSESSID='.$sid.'; lastvisit='.time(),
    Content => [
        action => 'addnew',
        forum => 1234,
        inpost => 'SLAVA2 Да не скажи, профилактика очень полезная вещь. Давай отвлечённо',
    ];

warn $req->as_string;



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
burakov
Дата 22.11.2012, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



Спасибо,
код попробую, но все таки.. 
хотелось бы просто модуль для правильной перекодировки. (бездумной smile)

ну есть же URI::Escape

также говорят
вот это может помочь

 use URI::Encode;
    my $uri     = URI::Encode->new( { encode_reserved => 0 } );
    my $encoded = $uri->encode($data);

но ни черта не помогает. smile.




--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
ginnie
Дата 22.11.2012, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 4
Всего: 49



Уважаемый burakov,  вот не стыдно заставлять меня все за Вас делать? Можно было самому посмотреть код в HTTP::Request::Common и увидеть:

Код

use URI;

my $uri = URI->new('http://test4.ru/post.php');

$uri->query_form(
    {
        inpost => 'SLAVA2 Да не скажи, профилактика очень полезная вещь. Давай отвлечённо...',
    }
);

warn $uri->query;


Это сообщение отредактировал(а) ginnie - 22.11.2012, 10:42


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0570 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.