![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте.
Маюсь уже сутки.. Перерыл столько форумов и разных источников, что мне уже просто плохо... Суть заключается в следующем. Есть у меня программа. Написана она у меня на TDelphi7. В программе присутствует момент авторизации, к-й я реализовал через IdHttp.Post. (На Седьмой делфи всё работает, но там Инди лаганутый). Решил я поставить Delphi XE2. И заметил ужасающий момент: Я делаю Post запрос на сервер. Некоторые из полей является словами, написанные кириллицей. А именно: ... Log.Add('subent=Войти'); Log.Add('kanswer='+(Edit1.Text)); //Ввод ответа на контрольный вопрос (рус). ... Начал компилировать свой проект, и увидел, что авторизация не проходит. Сильно удевился, и решил проанализировать через HttpАнализатор, что и как я отсылаю... И получил следующее: ... subent=Войти kanswer=линка ... Вот такой вот формат отсылает моя делфи на сервак. (и, разумеется, авторизация не проходит). ___________________ Я уже просто без сил. Не спал всю ночь. Если кто знает как решить этот вопрос, пожалуйста помогите. Готов заплатить 10$ за помощь (насколько простой бы она не была). Skype: Antoxachelsea (готов вас выслушать там). |
|
#2
|
||||
|
||||
|
преобразуй значения в %xx%xx%xx%xx...
|
|
#3
|
|||
|
|||
|
Цитата:
Каким образом мне его преобразовывать вот в это? |
|
#4
|
||||
|
||||
|
Quoted Printable.
|
|
#5
|
|||
|
|||
|
%D0%BB%D0%B8%D0%BD%D0%BA%D0%B0 - ну вот... получил я перекодировщик. Однако мне это совсем не помогло. =(
|
|
#6
|
||||
|
||||
|
%C2%EE%E9%F2%E8 и 2-ой также
|
|
#7
|
|||
|
|||
|
Не помогает этот способ.... Отправка поменялась на эти иероглифы. Но всёравно авторизация не проходит...
КАК сделать так, чтобы отправились в POST запросе нормальные русские буквы??? Чтобы у меня была строка 'мячик' и после Post запроса сервер получил 'мячик'. => Собственно как и получалось в Delphu 7. |
|
#8
|
|||
|
|||
|
Цитата:
Сделал так. Вот что мне теперь HttpАнализотор показал: subent=%D0%92%D0%BE%D0%B9%D1%82%D0%B8 kanswer=%D0%BB%D0%B8%D0%BD%D0%BA%D0%B0 -- вообщем то, чего мы и добивались... Только авторизация не прошла всёравно ... |
|
#9
|
||||
|
||||
|
|
| Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
antoxachelsea (12.07.2012)
| ||
|
#10
|
|||
|
|||
|
Цитата:
Если вы понимаете, объясните пожалуйста. Спасибо. |
|
#11
|
||||
|
||||
|
У тебя текст отправляется в кодировке UIF-8, перекодируй в ANSI, может получится.
|
|
#12
|
|||
|
|||
|
Цитата:
Мне нужно, чтобы на сервер отправилась именно русское слово. А Indy делает что-то непонятное.. |
|
#13
|
||||
|
||||
|
Цитата:
А чего не понятно-то? Используй TStringStream для отправки данных в методе http.post. В нем можно указывать кодировку при создании. Укажи 1251. |
| Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
antoxachelsea (12.07.2012)
| ||
|
#14
|
|||
|
|||
|
Цитата:
Дело в том, что для отправки 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
|
||||
|
||||
|
Цитата:
попробуй вот так: Код:
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)
| ||