Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2011, 20:48   #1
andrejjka
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 13
Вопрос Idhttp и параметры запроса

Столкнулся с проблемой.
В потоке выполняется следующая функция

Код HTML:
function stream.avtorizaciy(Srt:TStringList):TStringList;
var
IdHTTP: TIdHTTP;

begin


  Result:=TStringList.Create;
  
  try
    IdHTTP := TIdHTTP.Create(nil);
    IdHTTP.HandleRedirects:=True;
    IdHTTP.AllowCookies:=True;
    IdHTTP.CookieManager:=TIdCookieManager.Create(nil);
    IdHTTP.Request.UserAgent:='Mozilla/3.0';
    IdHTTP.Request.Accept:='text/html, */*';
    IdHTTP.Request.AcceptLanguage:='ru,en-us;q=0.7,en;q=0.3';
    IdHTTP.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
    IdHTTP.IOHandler:=TIdSSLIOHandlerSocket.Create(nil);
    Result.Text:=IdHTTP.Post('https://pogoda-sv.ru/cgi-bin/wda',srt);
    Synchronize(show);
    IdHTTP.Disconnect;
    IdHTTP.Free;
  except on e : EIDHttpProtocolException do
    Begin
      if e.ReplyErrorCode = 503 then
      begin
        flag:=True;
      end;

    end;

    on e: EIdSocksError do
    begin
      flag:=True;
    end;

  end;
end;
В нее поступают параметры авторизации следующего вида

Код HTML:
user=123
pass=123
Se1_old=BUL
Se1=BUL
Se2_old=WO/
Se2=WO/
Se3_old=лвут/
Se3=лвут/
Se4_old=чпту90лвут
Se4=чпту90лвут
на выходе получаю ответ на post запрос. НО после post запроса, еще до завершения работы функции, мои параметры авторизации превращаются в

Код HTML:
user=123
pass=123
Se1_old=BUL
Se1=BUL
Se2_old=WO/
Se2=WO/
Se3_old=%EB%E2%F3%F2/
Se3=%EB%E2%F3%F2/
Se4_old=%F7%EF%F2%F390%EB%E2%F3%F2
Se4=%F7%EF%F2%F390%EB%E2%F3%F2
Как это исправить?
andrejjka вне форума Ответить с цитированием
Старый 06.02.2011, 22:09   #2
kangreon
Форумчанин
 
Аватар для kangreon
 
Регистрация: 03.04.2009
Сообщений: 305
По умолчанию

На сколько я понял сервер хочет принемать данные в кодировке koi8-r

Код HTML:
<meta http-equiv='content-type' content='text/html; charset=koi8-r'>
в вашем случае сервер получает строчку вида Google

PS Какая у вас версия Delphi?

В Delphi XE можно сделать так
Код:
var
  ss: TStringStream;
begin
  ss := TStringStream.Create('имя1=значение1&имя2=значение2',20866);
  //(Вики) В Microsoft Windows KOI8-R присвоен код страницы 20866 
end;
// и пост запрос
http.post('url',ss)
kangreon вне форума Ответить с цитированием
Старый 06.02.2011, 23:27   #3
andrejjka
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 13
По умолчанию

Не дописал, пост запрос проходит! Я получаю нормальный ответ и дальше его обрабатываю. Мои параметры принимаются сервером! Но почему после пост запроса мои параметры меняют кодировку? Я далее их опять использую, но они уже в непригодном виде. Более того, если всю операцию делать через компонент на форме, то все проходит отлично!

У меня delphi 7.
andrejjka вне форума Ответить с цитированием
Старый 07.02.2011, 06:57   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> параметры меняют кодировку

Это UrlEncode(), с кодировкой всё в порядке. И по-моему TIdHTTP правильно сделал, что заенкодил их, так что я бы ничего и не исправлял )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Kira09 Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2010 17:28
idHTTP. Пропадают байты запроса !!! IvanBegin Работа с сетью в Delphi 4 08.02.2010 15:53
[Idhttp] Приостановка get-запроса EaRLL Работа с сетью в Delphi 3 27.09.2009 18:43
Отправка запроса на AMFPHP гейт через idHTTP ZaRDaK Работа с сетью в Delphi 8 04.09.2009 20:03
Как в ProgressBar отобразить процесс выполнения Post запроса через Idhttp Joe_Tribbiani Работа с сетью в Delphi 8 15.06.2009 10:39