Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IdHTTP и Proxy не работает... не работает через прокси 
V
    Опции темы
firs70
Дата 13.2.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 12.2.2007

Репутация: нет
Всего: нет



Snowy, Спасибо сейчас поглазею  smile 
PM MAIL   Вверх
firs70
Дата 13.2.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 12.2.2007

Репутация: нет
Всего: нет



оооохххх, как же там туго всё воспринимается...
там есть код а куда его вставлять я так и не понял... были бы исходники и прога работающая было бы вообще великолепно...
Да и еёш вопрос прокси прописывать так же как и для моей проги?
Вот так?
idHTTP1.ProxyParams.ProxyServer := '';
idHTTP1.ProxyParams.ProxyPort := ;

PM MAIL   Вверх
firs70
Дата 13.2.2007, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 12.2.2007

Репутация: нет
Всего: нет



Ребят, я наверное слишком наглый, НО не могли бы вы сделать подробное описание (а ещё лучше исходник) как сделать следующие вещи:
1. необходимо перейти по ссылке: https://ssl.rapidshare.com/cgi-bin/collectorszone.cgi
имея ввиду что выход в интерент будет через прокси сервер (я подозреваю что там будет такая же авторизация как и на предыдущей программке).
2. произвести аутентификацию: логин - delphi-test, пароль - 321789.
3. зайти на сайт и взять число поинтов (отмечены на рисунке красным прямоугольником).
user posted image

и показать как в моей программке.
PM MAIL   Вверх
Snowy
Дата 13.2.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Такс. Добил.
Заодно оттестил свой модуль smile
Код такой:
Код

uses  C_Http; // мой модуль - забиралка

type

  TForm1 = class(TForm)
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    http: TSwHttp;
    procedure OnWorkEnd(Sender: TSwHttp);
  end;

......

procedure TForm1.btn1Click(Sender: TObject);
begin
  if http = nil then http := TSwHttp.Create(Self); // создаём экземпляр моей http лазалки
  http.url.url := 'https://ssl.rapidshare.com/cgi-bin/collectorszone.cgi'; // задаём адрес
  http.Agent := 'Opera/9.10 (Windows NT 5.1; U; ru)'; // задаём имя клиента (не обязательно)
  http.Referer := http.url.url; // задаём реферер равный адресу (возможно не обязательно)
  http.PostData := 'username=delphi-test&password=321789'; // задаём POST запрос форме
  http.OnWorkEnd := OnWorkEnd; // при окончании загрузки вернуть всё в этот метод
  http.Request; // послать запрос
end;

procedure TForm1.OnWorkEnd(Sender: TSwHttp); // сюда возвращается результат
const ss = 'You have collected <b>'; // строка, по которой ищем
var
  s: string;
  i,c: integer;
begin
  if http.Error > 0 then ShowMessage('Error ' + IntToStr(http.Error) + ' ' + SysErrorMessage(http.Error)) // если ошибка
  else begin
    SetLength(s, http.Response.Size); // забираем страницу в строку
    http.Response.Read(s[1], Length(s));
    i := Pos(ss, s); // ищем строку "You have collected <b>"
    if i = 0 then i := -1 // не нашли? Тогда результат = -1 - вернулась не такая страница
    else begin
      s := Copy(s, i + Length(ss), 12);
      Val(s, i, c); // превращаем найденое число из строки в integer
    end;
    ShowMessage(IntToStr(i)); // И вот оно наше число!
  end;
end;

В аттаче мой модуль и тестовый проект.

Присоединённый файл ( Кол-во скачиваний: 50 )
Присоединённый файл  snowy_https_post.zip 4,30 Kb
PM MAIL   Вверх
firs70
Дата 13.2.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 12.2.2007

Репутация: нет
Всего: нет



Спасибо, всё работает!
Только вот почему настройки прокси я не увидел? что за такой хтирый ход? отку да то берётся что ли настроечки?
раскройте карты  smile 
PM MAIL   Вверх
Snowy
Дата 13.2.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Настроечки берутся из IE smile
PM MAIL   Вверх
firs70
Дата 13.2.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 12.2.2007

Репутация: нет
Всего: нет



То есть если IE не настроено, работать не будет?
У меня просто дома я работаю только через оперу и ещё у меня там логин и пароль спрашивает... выходит не будет работать так?
PM MAIL   Вверх
Snowy
Дата 13.2.2007, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Если IE не настроен, то нет.
Настройку прокси я ещё не сделал.
Хотя... Где-то наброски у меня валялись.
Но пока проверить не на чем.
Дома прокси имеется - там проверю.
Заодно и с логином и паролем разберусь.
PM MAIL   Вверх
firs70
Дата 14.2.2007, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 12.2.2007

Репутация: нет
Всего: нет



а с логином и паролем не заработала у меня дома  smile 
вот так не катит, ни в первой ни во второй программке
Код

  idHTTP1.ProxyParams.ProxyServer := '192.168.1.1';
  idHTTP1.ProxyParams.ProxyPort := 8080;
  idHTTP1.ProxyParams.ProxyUsername := 'user';
  idHTTP1.ProxyParams.ProxyPassword := 'pass';


PM MAIL   Вверх
Snowy
  Дата 14.2.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Добил компонент, но работу с прокси пока не тестировал.
Попробуй. Могет получится.
Теперь это компонент и его можно бросить на форму.
Доку пока не делал - только-только его дописал.

Брось его на форму.
Заполни параметры Proxy и Request.
Запуск запроса - DoRequest или Get или Post - как удобнее. По сути это одно и то же, только адрес и post в коде, а не в инспекторе прописываются.
Создай обработчик OnWorkEnd
В нём получишь результат:
Sender.Error = 0 - значит всё нормально, иначе не получилось.
Sender.Response - здесь результат - разберёшься smile
Вот простой пример:
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  SwinHttp1.Get('http://snowy.delphist.com/');
end;

procedure TForm1.SwinHttp1WorkEnd(Sender: TSwinHttp);
begin
  if Sender.Error = 0 then
  begin
    Memo1.Lines.Text := Sender.Response.Headers.Text;
    Memo2.Lines.Text := Sender.Response.Body;
  end else Memo2.Lines.Text := 'Error: ' + IntToStr(Sender.Error);
end;


Присоединённый файл ( Кол-во скачиваний: 34 )
Присоединённый файл  SwinHttp.zip 4,60 Kb
PM MAIL   Вверх
Lence
Дата 19.2.2007, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



Snowy, каким образом через ваш компонент отправить данные методом ПОСТ ? 

нужно передать переменой H параметр - все что находится в memo1
делаю так 

Код

var
a: string;
begin
 a:= ('H='+memo1.Text);
 SwinHttp1.Post('www.site.com/script.pl',a);


данные не принимаются. 
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Snowy
Дата 19.2.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Нужно указывать полный адрес: SwinHttp1.Post('http://www.site.com/script.pl', a);
Кроме того, компонент сам не кодирует post данные (url-кодирование) - это необходимо делать вручную.
PM MAIL   Вверх
Lence
Дата 19.2.2007, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



Цитата(Snowy @ 19.2.2007,  15:04)
Нужно указывать полный адрес: SwinHttp1.Post('http://www.site.com/script.pl', a);
Кроме того, компонент сам не кодирует post данные (url-кодирование) - это необходимо делать вручную.

Спасибо за ответ! сейчас сделаю полный путь, а каким образом делать url-кодирование ? 

Методом Get чтото тоже данные не принимаются, скрипты выдает сообщение что параметры не приняты (((

Это сообщение отредактировал(а) Lence - 19.2.2007, 15:20
--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Snowy
Дата 19.2.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(Lence @  19.2.2007,  15:12 Найти цитируемый пост)
а каким образом делать url-кодирование ? 
Ну, примерно так:
Код

function UrlEncode(s: string):string;
var i: integer;
begin
  result:='';
  for i:=1 to Length(s) do
    if (s[i] in ['A'..'z']) or (s[i] in ['-'..'0']) then result:=result+sl[i]
    else result:=result + '%' + IntToHex(ord(s[i]),2);
end;

PM MAIL   Вверх
Lence
Дата 19.2.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чухарадземадзупэ
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 9.5.2006
Где: Ташкент

Репутация: нет
Всего: 3



Чтото не получается ...  smile скрипт все равно возвращет ошибку smile 

Код

function UrlEncode(s: string):string;
var i: integer;
begin
  result:='';
  for i:=1 to Length(s) do
    if (s[i] in ['A'..'z']) or (s[i] in ['-'..'0']) then result:=result+s[i]
    else result:=result + '%' + IntToHex(ord(s[i]),2);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 SwinHttp1.Get('http://www.site.com/cgi-bin/script.pl?h='+UrlEncode(memo1.Lines.Text));
 
end;

--------------------
Шуруп, забитый молотком, крепче сидит чем гвоздь, закрученный отверткой ....  
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1272 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.