|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  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  
			
			
			
			
		 | ||||
| 
 | ||||
|   преобразуй значения в %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)
 | ||