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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2013, 22:15   #1
megostudent
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 320
По умолчанию сделать Get запрос с использованием http proxy

При попытке спарсить айпи выдает ошибку: заголовок окно ошибки- project1, текст- " . Подскажите что-нибудь пожалуйста
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    IdHTTP1: TIdHTTP;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  q: integer;

implementation

{$R *.dfm}

function FindID(strB,strE,str:string):string;
var
  b,e:integer;
begin
  b:=pos(strb,str)+Length(strb);
  e:=pos(strE,str);
  if (b=Length(strb))or(e=0) then
    Result:=''
  else
    Result:=copy(str,b,e-b);
    end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if opendialog1.Execute then
memo1.Lines.LoadFromFile(opendialog1.FileName);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
 q:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
site,proxy: string;
begin
proxy:=memo1.Lines.Strings[q];
idhttp1.ProxyParams.ProxyServer := Copy(proxy[q], 1, Pos(':', proxy[q]) - 1);
idhttp1.ProxyParams.ProxyPort :=strtoint(Copy(proxy[q], Pos(':', proxy[q]) + 1, length(proxy[q])));
site:=idhttp1.Get('http://2ip.ru/' + proxy);
edit1.Text:=FindID('<big id="d_clip_button">','</big>', site);
q:=q+1;
end;


end.
megostudent вне форума Ответить с цитированием
Старый 22.03.2013, 18:11   #2
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Код:
site:=idhttp1.Get('http://2ip.ru/' + proxy);
Уберите из кода то что выделено.
Pearl777 вне форума Ответить с цитированием
Старый 23.03.2013, 13:54   #3
megostudent
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 320
По умолчанию

а как я тогда получу исходных код старицы??? ошибка та же? попробовал чуток изменить код и проверить выгружает ли исходник
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    IdHTTP1: TIdHTTP;
    Memo1: TMemo;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    Memo2: TMemo;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  q: integer;

implementation

{$R *.dfm}

function FindID(strB,strE,str:string):string;
var
  b,e:integer;
begin
  b:=pos(strb,str)+Length(strb);
  e:=pos(strE,str);
  if (b=Length(strb))or(e=0) then
    Result:=''
  else
    Result:=copy(str,b,e-b);
    end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if opendialog1.Execute then
memo1.Lines.LoadFromFile(opendialog1.FileName);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;
 q:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
site,proxy: string;
//proxy: TStringList;
//http: TIdHTTP;
begin

proxy:=memo1.Lines.Strings[q];
 //for q:=0 to proxy.Count-1 do begin
idhttp1.ProxyParams.ProxyServer := Copy(Edit2.Text, 1, Pos(':', Edit2.Text) - 1);
idhttp1.ProxyParams.ProxyPort :=strtoint(Copy(Edit2.Text, Pos(':', Edit2.Text) + 1, length(Edit2.Text)));
site:=idhttp1.Get('http://2ip.ru/' + Edit2.Text);
memo2.Text:=idhttp1.Get('http://2ip.ru/' + Edit2.Text);
edit1.Text:=FindID('<big id="d_clip_button">','</big>', memo2.Text);
q:=q+1;
end;

//end;
end.
и тут или выводит страница не найдена или не отвечает прога или ошибка 302, ну ошибку из-за проксика скорее всего выдает, ну а срабочим страница не найдена не пойму в чем прикол

Последний раз редактировалось megostudent; 23.03.2013 в 14:08.
megostudent вне форума Ответить с цитированием
Старый 23.03.2013, 19:58   #4
Pearl777
Форумчанин
 
Регистрация: 04.01.2013
Сообщений: 171
По умолчанию

Естественно страница не будет найдена, так как вы отправляете get запрос http://2ip.ru/123.123.1.1:3128.
Код:
site:=idhttp1.Get('http://2ip.ru/');
В таком случае исходный код страницы будет загружен в переменную site.

Последний раз редактировалось Pearl777; 23.03.2013 в 20:08.
Pearl777 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HTTP Proxy Rakim4ik Работа с сетью в Delphi 6 04.12.2012 19:58
HTTP запрос The special one C/C++ Сетевое программирование 1 15.09.2012 12:37
работа MySQL через HTTP-proxy programmer1988 Работа с сетью в Delphi 2 13.08.2010 20:35
Http Proxy - как написать к браузеру http-прокси? SergeiGuk Общие вопросы .NET 0 21.05.2010 17:37
http, socks5 proxy с подсчетом пропускаемого траффа XoTTa6bI2 Фриланс 4 06.04.2007 12:58