Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.07.2012, 13:39
antoxachelsea antoxachelsea вне форума
Прохожий
 
Регистрация: 02.05.2012
Сообщения: 15
Репутация: 156
Стрелка Delphi XE2 (Indy 10+)

Здравствуйте.
Маюсь уже сутки.. Перерыл столько форумов и разных источников, что мне уже просто плохо...

Суть заключается в следующем.
Есть у меня программа. Написана она у меня на TDelphi7.
В программе присутствует момент авторизации, к-й я реализовал через IdHttp.Post. (На Седьмой делфи всё работает, но там Инди лаганутый).

Решил я поставить Delphi XE2.
И заметил ужасающий момент:

Я делаю Post запрос на сервер. Некоторые из полей является словами, написанные кириллицей. А именно:
...
Log.Add('subent=Войти');
Log.Add('kanswer='+(Edit1.Text)); //Ввод ответа на контрольный вопрос (рус).
...

Начал компилировать свой проект, и увидел, что авторизация не проходит.
Сильно удевился, и решил проанализировать через HttpАнализатор, что и как я отсылаю... И получил следующее:

...
subent=Войти
kanswer=линка
...

Вот такой вот формат отсылает моя делфи на сервак. (и, разумеется, авторизация не проходит).

___________________
Я уже просто без сил. Не спал всю ночь.
Если кто знает как решить этот вопрос, пожалуйста помогите.
Готов заплатить 10$ за помощь (насколько простой бы она не была).

Skype: Antoxachelsea (готов вас выслушать там).
Ответить с цитированием
  #2  
Старый 12.07.2012, 14:00
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

преобразуй значения в %xx%xx%xx%xx...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 12.07.2012, 14:04
antoxachelsea antoxachelsea вне форума
Прохожий
 
Регистрация: 02.05.2012
Сообщения: 15
Репутация: 156
По умолчанию

Цитата:
Сообщение от NumLock
преобразуй значения в %xx%xx%xx%xx...
Можно подробнее?
Каким образом мне его преобразовывать вот в это?
Ответить с цитированием
  #4  
Старый 12.07.2012, 14:22
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Quoted Printable.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 12.07.2012, 14:25
antoxachelsea antoxachelsea вне форума
Прохожий
 
Регистрация: 02.05.2012
Сообщения: 15
Репутация: 156
По умолчанию

%D0%BB%D0%B8%D0%BD%D0%BA%D0%B0 - ну вот... получил я перекодировщик. Однако мне это совсем не помогло. =(
Ответить с цитированием
  #6  
Старый 12.07.2012, 14:31
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

%C2%EE%E9%F2%E8 и 2-ой также
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 12.07.2012, 14:33
antoxachelsea antoxachelsea вне форума
Прохожий
 
Регистрация: 02.05.2012
Сообщения: 15
Репутация: 156
По умолчанию

Не помогает этот способ.... Отправка поменялась на эти иероглифы. Но всёравно авторизация не проходит...

КАК сделать так, чтобы отправились в POST запросе нормальные русские буквы???

Чтобы у меня была строка 'мячик' и после Post запроса сервер получил 'мячик'.

=> Собственно как и получалось в Delphu 7.
Ответить с цитированием
  #8  
Старый 12.07.2012, 14:35
antoxachelsea antoxachelsea вне форума
Прохожий
 
Регистрация: 02.05.2012
Сообщения: 15
Репутация: 156
По умолчанию

Цитата:
Сообщение от NumLock
%C2%EE%E9%F2%E8 и 2-ой также

Сделал так. Вот что мне теперь HttpАнализотор показал:

subent=%D0%92%D0%BE%D0%B9%D1%82%D0%B8
kanswer=%D0%BB%D0%B8%D0%BD%D0%BA%D0%B0

-- вообщем то, чего мы и добивались...
Только авторизация не прошла всёравно ...
Ответить с цитированием
  #9  
Старый 12.07.2012, 15:02
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Было уже это
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение:
antoxachelsea (12.07.2012)
  #10  
Старый 12.07.2012, 15:09
antoxachelsea antoxachelsea вне форума
Прохожий
 
Регистрация: 02.05.2012
Сообщения: 15
Репутация: 156
По умолчанию

Цитата:
Сообщение от Aristarh Dark
Я внимательно прочел эту тему. Однако там совсем не ясно, как автор решил проблемму?

Если вы понимаете, объясните пожалуйста. Спасибо.
Ответить с цитированием
  #11  
Старый 12.07.2012, 15:15
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

У тебя текст отправляется в кодировке UIF-8, перекодируй в ANSI, может получится.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #12  
Старый 12.07.2012, 15:20
antoxachelsea antoxachelsea вне форума
Прохожий
 
Регистрация: 02.05.2012
Сообщения: 15
Репутация: 156
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
У тебя текст отправляется в кодировке UIF-8, перекодируй в ANSI, может получится.
Я делал это изначально. Результат это не принесло. (Остались какие-то кракозябры, только немного другие).

Мне нужно, чтобы на сервер отправилась именно русское слово.
А Indy делает что-то непонятное..
Ответить с цитированием
  #13  
Старый 12.07.2012, 15:23
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от antoxachelsea
Я внимательно прочел эту тему. Однако там совсем не ясно, как автор решил проблемму?

Если вы понимаете, объясните пожалуйста. Спасибо.

А чего не понятно-то?
Используй TStringStream для отправки данных в методе http.post. В нем можно указывать кодировку при создании. Укажи 1251.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение:
antoxachelsea (12.07.2012)
  #14  
Старый 12.07.2012, 15:32
antoxachelsea antoxachelsea вне форума
Прохожий
 
Регистрация: 02.05.2012
Сообщения: 15
Репутация: 156
По умолчанию

Цитата:
Сообщение от Aristarh Dark
А чего не понятно-то?
Используй TStringStream для отправки данных в методе http.post. В нем можно указывать кодировку при создании. Укажи 1251.

Дело в том, что для отправки POST запроса я исп. след конструкцию:

Код:
ssylka:='ССЫЛКА';
Log:=TstringList.Create;

Log.Add('wmid='+Unit1.wmid);
Log.Add('pass='+Unit1.pas);
Log.Add('subent=Войти');
Log.Add('kanswer='+(Edit1.Text));
Log.Add('cnum='+Edit2.Text);

StrPage1:=idhttp1.Post(ssylka, Log);

Вы предлагаете сделать замену TstringList?
Я просто не совсем понимаю конструкцию в данном случае...

Подскажите тогда куском кода, как это наглядно должно выглядеть..
Ответить с цитированием
  #15  
Старый 12.07.2012, 15:54
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от antoxachelsea
Дело в том, что для отправки POST запроса я исп. след конструкцию:

Код:
ssylka:='ССЫЛКА';
Log:=TstringList.Create;

Log.Add('wmid='+Unit1.wmid);
Log.Add('pass='+Unit1.pas);
Log.Add('subent=Войти');
Log.Add('kanswer='+(Edit1.Text));
Log.Add('cnum='+Edit2.Text);

StrPage1:=idhttp1.Post(ssylka, Log);

Вы предлагаете сделать замену TstringList?
Я просто не совсем понимаю конструкцию в данном случае...

Подскажите тогда куском кода, как это наглядно должно выглядеть..

попробуй вот так:

Код:
ssylka:='ССЫЛКА';
Log:=TstringList.Create;

Log.Add('wmid='+Unit1.wmid);
Log.Add('pass='+Unit1.pas);
Log.Add('subent=Войти');
Log.Add('kanswer='+(Edit1.Text));
Log.Add('cnum='+Edit2.Text);
s:=TStringStream.Create(log.Text,1251);

StrPage1:=idhttp1.Post(ssylka, s);
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение:
antoxachelsea (12.07.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:08.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025