• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Редирект В Sunapse

  • Автор темы Автор темы Kolovrat
  • Дата начала Дата начала

Kolovrat

Принятый Кодер
Регистрация
10 Апр 2016
Сообщения
38
Баллы
50
как реализовать редирект в sunapse,если происходит перенаправление на другую страничку если есть пример кода и в двух словах как реализовать в своем софте
 
Код:
function GetRedirectUrl: string;
  var i: integer;
      Line: string;
begin
  Result:='';
  for i := 0 to HTTP.Headers.Count-1 do
  begin
    Line:=LowerCase(HTTP.Headers[i]);
    if Pos('location:',Line)>0 then
    begin
      Result:=Trim(StringReplace(Line,'Location:','',[rfIgnoreCase]));
      Exit;
    end;
  end;
end;

HTTP - твой THttpSend
Код:
PostData := HTTP.HTTPMethod('POST','...',...);
HTTP.HTTPMethod('GET',GetRedirectUrl());

А ещё лучше создать отдельный класс и не надо будет всегда создавать потоки. В работе проста, редирект и т.д.
Если интересно, вот:
Код:
TDHttp = class
    FCodePage: Cardinal;
    FSend: THttpSend;
    FReferer: string;
    function GetError: string;
    function GetRedirectUrl: string;
    function GET(AUrl: string): string;
    function POST(AUrl: string; AParams: TStringList): string;
    Constructor Create; overload;
  end;
//.........
constructor TDHttp.Create;
begin 
  FSend:=THttpSend.create;
  FSend.Protocol:='1.1';
  FSend.Timeout:=3000;
  FCodePage:=CP_UTF8;
  FSend.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1';
  FSend.MimeType :='application/x-www-form-urlencoded';
end;

function TDHttp.GetError: string;
begin
  Result:='';
  if FSend.ResultCode>0 then
    Result:=Result+IntToStr(FSend.ResultCode);
  if FSend.ResultString<>'' then
    Result:=Result+': '+FSend.ResultString;
end;

function TDHttp.GetRedirectUrl: string;
  var i: integer;
      Line: string;
begin
  Result:='';
  for i := 0 to FSend.Headers.Count-1 do
  begin
    Line:=LowerCase(FSend.Headers[i]);
    if Pos('location:',Line)>0 then
    begin
      Result:=Trim(StringReplace(Line,'Location:','',[rfIgnoreCase]));
      Exit;
    end;
  end;
end;

function TDHttp.GET(AUrl: string): string;
  var Stream: TStringStream;
      RedirectUrl: string;
begin
  try
    Stream:=TStringStream.Create('');
    try
      FSend.Headers.Clear;
      FSend.Document.Clear;
      if FReferer<>'' then FSend.Headers.Add('Referer: '+FReferer);
      if FSend.HTTPMethod('GET', AUrl) then
      begin
        FSend.Document.SaveToStream(Stream);
        Result:=Stream.DataString;
        RedirectUrl:=GetRedirectUrl;
        if RedirectUrl<>'' then
          Result:=GET(RedirectUrl);
      end else raise Exception.Create(GetError);
    finally
      Stream.Free;
    end;
  except
    on E: Exception do
      raise Exception.Create('TDHttp.GET('+AUrl+'): '+E.Message);
  end;
end;

function TDHttp.POST(AUrl: string; AParams: TStringList): string;
  var Stream: TStringStream;
      RedirectUrl: string;
      i: integer;
begin
  try
    Stream:=TStringStream.Create('');
    try
      FSend.Headers.Clear;
      FSend.Document.Clear; 
      if FReferer<>'' then FSend.Headers.Add('Referer: '+FReferer);
      for i := 0 to AParams.Count-1 do
      if i=0 then
        Stream.WriteString(AParams[i]) else
          Stream.WriteString('&'+AParams[i]);
      FSend.Document.LoadFromStream(Stream);
      if FSend.HTTPMethod('POST',AUrl) then
      begin
        FSend.Document.SaveToStream(Stream);
        Result:=Stream.DataString;
        RedirectUrl:=GetRedirectUrl;
        if RedirectUrl<>'' then
          Result:=GET(RedirectUrl);
      end else raise Exception.Create(GetError);
    finally
      Stream.Free;
    end;
  except
    on E: Exception do
      raise Exception.Create('TDHttp.POST('+AUrl+'): '+E.Message);
  end;
end;
Использование:
Код:
var
  http: TDHTTP;
  T: TStringList;
begin
  http := TDHTTP.Create;
  T := TStringList.Create;
// пример указания параметров
  http.FSend.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8');
  http.FSend.Headers.Add('Host: mysite.com');
  http.FSend.MimeType := 'application/x-www-form-urlencoded';
//если нужно использовать реферер то вот так:
  http.FReferer := 'http://mysite.com/login';
// пример указания параметров
  T.Add('username=11');
  T.Add('password=22');
  http.Post('http://mysite.com', T); // post запрос
  http.Get('http://mysite.com'); // get запрос
end;
 
как реализовать редирект в sunapse,если происходит перенаправление на другую страничку если есть пример кода и в двух словах как реализовать в своем софте
Не забываем отвечать на ответы в вашей теме,если от ТС не будет ответа,леса будет закрываться и чтобы её открыть заново ,нужно будет писать в лс,модератору или администрации который закрыл тему.
Спасибо за понимание .
Мы делаем все,что бы нашим пользователям было удобно работать с форумом.
 
Не забываем отвечать на ответы в вашей теме,если от ТС не будет ответа,леса будет закрываться и чтобы её открыть заново ,нужно будет писать в лс,модератору или администрации который закрыл тему.
Спасибо за понимание .
Мы делаем все,что бы нашим пользователям было удобно работать с форумом.
я что вам вундеркинд?дайте протестить по пробовать,будут вопросы или проблемы буду задавать,если не будет я сам скажу что все понятно всем спасибо тему можно закрывать,че мне спамить всякой ерундой,если еще ни чего не проверил,я лайк поставил,значит дал понять что спасибо пошел тестить
 
Код:
function GetRedirectUrl: string;
  var i: integer;
      Line: string;
begin
  Result:='';
  for i := 0 to HTTP.Headers.Count-1 do
  begin
    Line:=LowerCase(HTTP.Headers[i]);
    if Pos('location:',Line)>0 then
    begin
      Result:=Trim(StringReplace(Line,'Location:','',[rfIgnoreCase]));
      Exit;
    end;
  end;
end;

HTTP - твой THttpSend
Код:
PostData := HTTP.HTTPMethod('POST','...',...);
HTTP.HTTPMethod('GET',GetRedirectUrl());

А ещё лучше создать отдельный класс и не надо будет всегда создавать потоки. В работе проста, редирект и т.д.
Если интересно, вот:
Код:
TDHttp = class
    FCodePage: Cardinal;
    FSend: THttpSend;
    FReferer: string;
    function GetError: string;
    function GetRedirectUrl: string;
    function GET(AUrl: string): string;
    function POST(AUrl: string; AParams: TStringList): string;
    Constructor Create; overload;
  end;
//.........
constructor TDHttp.Create;
begin
  FSend:=THttpSend.create;
  FSend.Protocol:='1.1';
  FSend.Timeout:=3000;
  FCodePage:=CP_UTF8;
  FSend.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1';
  FSend.MimeType :='application/x-www-form-urlencoded';
end;

function TDHttp.GetError: string;
begin
  Result:='';
  if FSend.ResultCode>0 then
    Result:=Result+IntToStr(FSend.ResultCode);
  if FSend.ResultString<>'' then
    Result:=Result+': '+FSend.ResultString;
end;

function TDHttp.GetRedirectUrl: string;
  var i: integer;
      Line: string;
begin
  Result:='';
  for i := 0 to FSend.Headers.Count-1 do
  begin
    Line:=LowerCase(FSend.Headers[i]);
    if Pos('location:',Line)>0 then
    begin
      Result:=Trim(StringReplace(Line,'Location:','',[rfIgnoreCase]));
      Exit;
    end;
  end;
end;

function TDHttp.GET(AUrl: string): string;
  var Stream: TStringStream;
      RedirectUrl: string;
begin
  try
    Stream:=TStringStream.Create('');
    try
      FSend.Headers.Clear;
      FSend.Document.Clear;
      if FReferer<>'' then FSend.Headers.Add('Referer: '+FReferer);
      if FSend.HTTPMethod('GET', AUrl) then
      begin
        FSend.Document.SaveToStream(Stream);
        Result:=Stream.DataString;
        RedirectUrl:=GetRedirectUrl;
        if RedirectUrl<>'' then
          Result:=GET(RedirectUrl);
      end else raise Exception.Create(GetError);
    finally
      Stream.Free;
    end;
  except
    on E: Exception do
      raise Exception.Create('TDHttp.GET('+AUrl+'): '+E.Message);
  end;
end;

function TDHttp.POST(AUrl: string; AParams: TStringList): string;
  var Stream: TStringStream;
      RedirectUrl: string;
      i: integer;
begin
  try
    Stream:=TStringStream.Create('');
    try
      FSend.Headers.Clear;
      FSend.Document.Clear;
      if FReferer<>'' then FSend.Headers.Add('Referer: '+FReferer);
      for i := 0 to AParams.Count-1 do
      if i=0 then
        Stream.WriteString(AParams[i]) else
          Stream.WriteString('&'+AParams[i]);
      FSend.Document.LoadFromStream(Stream);
      if FSend.HTTPMethod('POST',AUrl) then
      begin
        FSend.Document.SaveToStream(Stream);
        Result:=Stream.DataString;
        RedirectUrl:=GetRedirectUrl;
        if RedirectUrl<>'' then
          Result:=GET(RedirectUrl);
      end else raise Exception.Create(GetError);
    finally
      Stream.Free;
    end;
  except
    on E: Exception do
      raise Exception.Create('TDHttp.POST('+AUrl+'): '+E.Message);
  end;
end;
Использование:
Код:
var
  http: TDHTTP;
  T: TStringList;
begin
  http := TDHTTP.Create;
  T := TStringList.Create;
// пример указания параметров
  http.FSend.Headers.Add('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8');
  http.FSend.Headers.Add('Host: mysite.com');
  http.FSend.MimeType := 'application/x-www-form-urlencoded';
//если нужно использовать реферер то вот так:
  http.FReferer := 'http://mysite.com/login';
// пример указания параметров
  T.Add('username=11');
  T.Add('password=22');
  http.Post('http://mysite.com', T); // post запрос
  http.Get('http://mysite.com'); // get запрос
end;
есть видео какое не то про эти Редиректы ?
 
Вверх Снизу