Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > idhttp


Автор: TrillerMan 25.11.2007, 18:06
Здрасти всем.

Есть строка вида 
Код

http://www.zaycev.net/download.php?id=167978&ass=Л. Кучина_-_Девочка уркоганная.mp3&text_check=eb0bf576c15a9eaded913d1778029b9f&ok=%D1%EA%E0%F7%E0%F2%FC


Думал,что idhttp её на автомате преобразует,как браузер преобразовывает,оказалось нет.
Как преобразовать эту строку для IdHttp ? Какая функция ?Какая кодировка ?

Гуглил,но нахожу много мусора,дельное не нашёл ((

Автор: aktuba 25.11.2007, 20:56
Код

IdHTTP.HTTPOptions := IdHTTPOptions + [hoForceEncodeParams];

Автор: TrillerMan 25.11.2007, 21:43
Делаю вот так
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
IdHTTP1.HTTPOptions := IdHTTP1.HTTPOptions + [hoForceEncodeParams];
page1:= IdHTTP1.Get('http://www.zaycev.net/download.php?id=167985&ass=Л. Кучина_-_Жулик.mp3&text_check=77111ff81ec90eff3ebac982b1c3180f&ok=%D1%EA%E0%F7%E0%F2%FC');

всё равно вылетает ошибка,пишет "<html>."

да это значение [hoForceEncodeParams]  и по умолчанию установлено


Как перекодировать строку в нужную мне?

Автор: aktuba 26.11.2007, 05:11
Цитата(TrillerMan @  25.11.2007,  19:06 Найти цитируемый пост)
http://www.zaycev.net/download.php?id=167978&ass=Л. Кучина_-_Девочка уркоганная.mp3&text_check=eb0bf576c15a9eaded913d1778029b9f&ok=%D1%EA%E0%F7%E0%F2%FC


Цитата(TrillerMan @  25.11.2007,  22:43 Найти цитируемый пост)
http://www.zaycev.net/download.php?id=167985&ass=Л. Кучина_-_Жулик.mp3&text_check=77111ff81ec90eff3ebac982b1c3180f&ok=%D1%EA%E0%F7%E0%F2%FC

Что-то мне подсказывает, что напрямую скачать файл не получиться ;) Сравни ссылки - поля text_check различаются и, скорее всего, генерируются при заходе на страницу. А значит, чтобы скачать этот файл, надо сначала загрузить страницу, выдрать ссылку + куки и только после этого, с выдранными куками идти за файлом...

Автор: TrillerMan 26.11.2007, 14:16
Цитата(aktuba @  26.11.2007,  05:11 Найти цитируемый пост)
Что-то мне подсказывает, что напрямую скачать файл не получиться ;) Сравни ссылки - поля text_check различаются и, скорее всего, генерируются при заходе на страницу. А значит, чтобы скачать этот файл, надо сначала загрузить страницу, выдрать ссылку + куки и только после этого, с выдранными куками идти за файлом... 


ну я всё это и делаю )) А ты попробуй перейди по ссылке,у меня всё и без куков работает.

Да вопрос в том,как строку то перекодировать? А то вылетает ошибка,как я выше описал.Как руками её перекодировать? Какая счас у неё кодировка и в какую кодировку мне надо её привести? Может есть функция?

Автор: Snowy 26.11.2007, 15:04
Код
function EncodeUrl(url:string):string;
var
  i: integer;
begin
  result:='';
  for i:=1 to Length(url) do
    if (url[i] < #127) and (url[i] > #32) then result:=result+url[i]
    else result:=result + '%' + IntToHex(ord(url[i]),2);
end;

Автор: TrillerMan 27.11.2007, 15:01
 smile  Биг сенкс to Snowy,работает на ура. smile 

Автор: creas0ft 27.1.2008, 01:36
httpencode - httpdecode из httpapp.pas

Автор: lukash256 27.1.2008, 15:53
function  translate(s:string):string;
var i:word;            tmp:string;
begin
for i := 1 to length(s)-1  do
if (ord(s[i])=208) and (ord(s[i+1])=129) then
    begin
      insert('Ё',s,pos(s[i]+s[i+1],s));
      delete(s,pos(s[i]+s[i+1],s)+1,2);
    end else
if (ord(s[i])=209) and (ord(s[i+1])=145) then
    begin
      insert('ё',s,pos(s[i]+s[i+1],s));
      delete(s,pos(s[i]+s[i+1],s)+1,2);
    end else
if (ord(s[i])=208) then begin
                             insert(chr(ord(s[i+1])+48),s,pos(s[i]+s[i+1],s));
                             delete(s,pos(s[i]+s[i+1],s)+1,2);
                        end else
if (ord(s[i])=209) then begin
                             insert(chr(ord(s[i+1])+112),s,pos(s[i]+s[i+1],s));
                             delete(s,pos(s[i]+s[i+1],s)+1,2);
                        end;
  translate:=s;
end;

Автор: VICTAR 28.1.2008, 02:46
lukash256, что ЭТО и как относится к вопросу?  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)