Форум: "Сети";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
ВнизРабота с Indy Найти похожие ветки
← →
SDF (2003-11-06 08:01) [0]Всем привы.
Кратко. Поставил 7 дельфу.. Там инди... Попробовал по наитию, нифига не получается. Доку почиталд, попробовал еще раз - аналогично. Кто пожертвует своим временем (сильно теранить не буду) и поотвечает мне на вопросы посредством мыла.
Заранее благодарный.
← →
SDF (2003-11-08 07:40) [1]up
← →
Rouse_ (2003-11-08 09:28) [2]Ну там же есть демки, в них все прозрачно сделано...
C:\Program Files\Borland\Delphi7\Demos\Indy
В крайнем случае если демки отсутствуют их можно скачать с сайта разработчиков...
http://www.nevrona.com/indy/
Желаю успехов
← →
SDF (2003-11-08 14:00) [3]Удалено модератором
Примечание: Выбираем выражения...
← →
Anatoly Podgoretsky (2003-11-08 14:14) [4]Не рассказывай, есть там и исходные тексты и справка и примеры, может ты с Интернет не умеешь работать?
← →
SDF (2003-11-09 09:05) [5]Заранее прошу извинения за мою тупость.. но
вот прошелся я по линкам и пришел на
http://www.indyproject.org/teams/Demo/demolisting80.html (это не реклама)
А как теперь скачать ....
НУ помогите плз!
← →
SDF (2003-11-10 06:08) [6]up
← →
SDF (2003-11-10 08:57) [7]Удалено модератором
← →
SDF (2003-11-14 13:27) [8]Вновь поднему тему...
Я пишу конкретную прогу.
Сижу за проксей. Basic авторизация не предусмотрена на прокси.
Помогите, народ!
1. Может ли Indy работать с такими прокси.
2. Если да, то набросайте пример (или вышлите на мыло) отправку Post ну или Get
ПОЖАЛУЙСТА!
← →
SDF (2003-11-15 07:36) [9]up
← →
app (2003-11-15 12:10) [10]Создание пустых сообщений, после очередного UP будет DOWN.
Воздержишь вообще в отправке любых сообщений, пока не прочитаешь базовые правила на http://delphimaster.ru/forums.shtml
← →
Евген (2003-11-17 19:36) [11]
> SDF
Повторяю для ленивых и непонятливых (уже в который раз):
http://www.indyproject.org/indy/downloads/Indy-9-0-Help-WinHelp.zip - англоязычный хелп; http://www.indyproject.org/indy/demodownloads/I9D6_Demos_24Nov02.zip - примеры от 24-11-02 (может уже новые вышли).
Да... ты так далеко пойдешь... :-(
← →
SDF (2003-11-18 08:45) [12]Давайте все заново.
Я может и тайга непроходимая, но все же...
Уже облазил миллион темовых форумов... всюду задовал один и тот-же вопрос... И кругом один ответ, мол есть примеры, хелпы и прочее.
Смотрел я эти пример, пробовал, изменял.... нихрена!
А кто из вас РЕАЛЬНО пытался написать софтинку, которая ходит за прокси без basic авторизации.
Ежели таковые имеются, помоги. Очень прошу.
Могу даже дать параметры своей прокси.
Буду признателен за пример из 2 кнопок и 4 едитов с компонентом tIdhttp.
ЗЫ Давайте без иронии. Ежели все круты, то набросать такую прогу с отсыланием post - дело 10 минут.
Вышлите мне пример на мыльник.
Даже объявляю цену 300-500 рублей в зависимости от возможностей проги.
Если она заработает, обязуюсь в этот же день выслать деньги.
Заранее благодарный.
← →
SDF (2003-11-18 12:55) [13]Вот вам пример, который я переработал из примера для indy 8.
Скажите, где не правильно.
procedure TForm1.btnGoClick(Sender: TObject);
var
Source: TMemoryStream;
Response: TStringStream;
begin
// Add the URL to the combo-box.
if cbURL.Items.IndexOf(cbURL.Text) = -1 then
cbURL.Items.Add(cbURL.Text);
Screen.Cursor := crHourGlass;
btnStop.Enabled := True;
btnGo.Enabled := False;
try
memoHTML.Clear;
// Set the properties for HTTP
HTTP.ProxyParams.ProxyUsername := edUsername.Text;
HTTP.ProxyParams.ProxyPassword := edPassword.Text;
HTTP.ProxyParams.ProxyServer := edProxyServer.Text;
HTTP.ProxyParams.ProxyPort := StrToIntDef(edProxyPort.Text, 80);
HTTP.REquest.ContentType := "application/x-www-form-urlencoded";
// HTTP.Intercept := LogDebug;
// HTTP.InterceptEnabled := true;
case cbMethod.ItemIndex of
2: // Post
begin
Response := TStringStream.Create("");
try
if not bPostFile then
// Ошибка генерится в следующей строке
HTTP.Post(cbURL.Text, mePostData.Lines, Response)
memoHTML.Lines.Text := Response.DataString;
finally
Response.Free;
end;
end;
end;
finally
Screen.Cursor := crDefault;
btnStop.Enabled := False;
btnGo.Enabled := True;
end;
end;
← →
SDF (2003-11-19 10:48) [14]Удалено модератором
← →
Digitman (2003-11-19 11:30) [15]
> // Ошибка генерится в следующей строке
угу ... какая ошибка - это Пушкин должен знать, очевидно у него, у Пушкина, и спрашивать надо
> Отсюда сделаем вывод
действительно, отсюда и делаем вывод : автор вопроса демонстрирует элементарное неуважение к посетителям форума, которые должны все бросить и начать с автором нудную игру в "угадайку с трех раз"
← →
SDF (2003-11-19 14:52) [16]Удалено модератором
Примечание: В чат...
← →
Digitman (2003-11-19 15:18) [17]и опять ты болтологией занялся !
ну и где опять подробное описание ошибки ?
← →
SDF (2003-11-20 11:31) [18]Постараюсь конкретно.
У меня не ошибка, а скорее проблема.
Не могу выйти за проксю без бейсик авторизации через компоненты Инди.
Кто борлся и побеждал, дайте плз дельный совет.
Дижит, я тебе мыльник отправил.
← →
Digitman (2003-11-20 12:02) [19]опять болтовня !
цитирую тебя :
> // Ошибка генерится в следующей строке
> HTTP.Post(cbURL.Text, mePostData.Lines, Response)
ну так и рассказывай , как все это выглядит !
что за ошибка, исключение это или событие какое-то , точный текст сообщения об ошибке и т.д. и т.п.
долго из тебя вытягивать ?!
> я тебе мыльник отправил
больше так не делай.
подобные вопросы/проблемы можно решить здесь
Инди я не пользую вообще, но концептуально ошибка вполне может быть локализована без привязки ко всяким там Инди и иже с ними
← →
Smithson (2003-11-20 12:13) [20]Скажи внятно - тебе нужно пройти прокси без авторизации?
Зачем тогда заполняешь поля proxyUserName и т.д.?
Или тебе нужно пройти через прокси с авторизацией?
← →
Reindeer Moss Eater (2003-11-20 12:18) [21]с авторизацией, тип которой хранится в тайне от нас.
← →
SDF (2003-11-20 12:41) [22]Я рад, что заинтересовал (достал)....
Попробую еще раз.
Прокся у меня принимает следующие виды авторизации.
а) Kerboros
б) Negate
с) NTML
Использую компонент Indy TIdHttp
Вот упрощенный код
try
memoHTML.Clear;
// Set the properties for HTTP
HTTP.ProxyParams.ProxyUsername := edUsername.Text;
HTTP.ProxyParams.ProxyPassword := edPassword.Text;
HTTP.ProxyParams.ProxyServer := edProxyServer.Text;
HTTP.ProxyParams.ProxyPort := StrToIntDef(edProxyPort.Text, 80);
HTTP.REquest.ContentType := "application/x-www-form-urlencoded";
Response := TStringStream.Create("");
try
HTTP.Post(cbURL.Text, mePostData.Lines, Response);
memoHTML.Lines.Text := Response.DataString;
finally
Response.Free;
end;
finally
end;
В выделеном фрагменте кода, выскакивает сообщение следующего рода.
Access violation at address at 004792b0 in module "HTTPClient.exe" Read of address 0000001C.
Имхо, сея ошибка возникает при доступе к несуществующему указателю....
Возможно, я что-то не скриатил, что-то не присвоил....
Вот я и спрашиваю, кто работал с этим делом, подскажите как быть.
То Диджит... Где-то видел такое выражение.
Если хочешь правильно задать вопрос, необходимо знать больше половины ответа.
Так вот, я не знаю даже четверти, отсюда и такие вопросы.
← →
Reindeer Moss Eater (2003-11-20 12:49) [23]AV скорее всего из-за того, что объект Response не существует
← →
Digitman (2003-11-20 13:09) [24]
> SDF
наконец-то разродился чем-то конкретным)
и сразу стало понятным, что ни прокси, ни авторизации, ни Инди здесь ни при чем !
факт налицо : один (или более) из 3-х факт.параметров вызова метода HTTP.Post() некорректен/недопустим
отладчик тебе в руки и - вперед ! трасиировка всегда поможет !
← →
SDF (2003-11-20 13:10) [25]Хорошо, я убрал Response (благо есть такой метод)
Ошибка осталась...
← →
Digitman (2003-11-20 13:15) [26]
> SDF
брось ты метод научного тыка)
на то есть встр.отладчик, пошаговая трассировка проблемного кода его средствами всегда покажет то, что пропустил глаз или забыла/не знала голова)
← →
SDF (2003-11-20 13:19) [27]Send HTTP data to a web server or CGI program.
function Post(AURL: string; const ASource: TStrings): string; overload;
AUrl=текст комбобокса
ASource= "линии" мемо...
Где ошибка?
← →
SDF (2003-11-20 13:20) [28]Ссори за оффтопик, но скажи мне плз, а где такой отладчик, чтоб внутренности компонент трассировать?
← →
Reindeer Moss Eater (2003-11-20 13:26) [29]HTTP.Post(cbURL.Text, mePostData.Lines, Response);
Если AV действительно на этой строке, то нет cbURL и (или) mePostData
← →
Digitman (2003-11-20 13:28) [30]
> а где такой отладчик, чтоб внутренности компонент трассировать?
да все тот же встроенный отладчик Делфи !
а что, ты уже точно выяснил, что факт.параметры, поступающие на вход метода - в полном порядке ? Никаких неожиданностей ? И причина AV уводит вглубь кода компонента ? Что-то сомневаюсь я в этом)...
пересобери-ка свой проект с опцией Build With Run-Time Packages и приведи повторно дословный текст исключения ... по адресу, фигурирующему в тексте исключения, сразу будет видно, какой модуль "нарвался" на AV : модуль твоего хост-приложения или BPL в составе Инди
← →
SDF (2003-11-20 13:46) [31]Залез я пока в сорцы инди....
← →
SDF (2003-11-20 14:06) [32]Ошибка возникает в методе
TIdCustomHTTP.DoOnProxyAuthorization
Пока не понял почему...
← →
Reindeer Moss Eater (2003-11-20 14:06) [33]Залез я пока в сорцы инди....
И это правильно. Нужно быть уверенным в себе.
Если уж написал код, так такой, чтоб без греха, чтоб не надо было проверять где причина AV.
Остается больше времени для исследования причин возникновения AV в исходниках библиотек. Ну и фиг с ним, что они тыщу лет OpenSource и исследованы сотнями и тысячами пар глаз.
← →
SDF (2003-11-20 14:25) [34]Накопал вот что, постараюсь пркомментировать мои мыслы...
Хотелось бы услышать и другие мнения...
И так, ошибка генерится вот где.
var
i: Integer;
S: string;
Auth: TIdAuthenticationClass;
begin
Inc(FAuthProxyRetries);
if not Assigned(ProxyParams.Authentication) then
begin
// Find wich Authentication method is supported from us.
for i := 0 to AResponse.ProxyAuthenticate.Count - 1 do
begin
S := AResponse.ProxyAuthenticate[i];
try
Auth := FindAuthClass(Fetch(S));
break;
except
end;
end;
if i = AResponse.ProxyAuthenticate.Count then
begin
result := false;
exit;
end;
if Assigned(FOnSelectProxyAuthorization) then
begin
OnSelectProxyAuthorization(self, Auth, AResponse.ProxyAuthenticate);
end;
ProxyParams.Authentication := Auth.Create;
end;
Давайте вместе пораскинем мозгами..
Предыстория. Залетаем мы сюда при ответе прокси кодом 407 (авторизацию подавай).
Увеличиваем попытки авторизоваться на 1.
Далее проверяем, если определен некий Authentication, что является пропертей проперти нашего компонента TIdHttp->ProxyParams->Authentication
ProxyParams является ссылкой на объект класса TIdProxyConnectionInfo .
Authentication - ссылка на объект класса TIdAuthentication
разберем детально блок вот какой....
// Find wich Authentication method is supported from us.
for i := 0 to AResponse.ProxyAuthenticate.Count - 1 do
begin
S := AResponse.ProxyAuthenticate[i];
try
Auth := FindAuthClass(Fetch(S));
break;
except
end;
end;
Продолжение следует...
← →
SDF (2003-11-20 16:24) [35]Все, покрайней мере этот баг устранил....
Копаю дальше...
← →
Digitman (2003-11-20 17:07) [36]"лед тронулся, господа присяжные заседатели !"
(c) О.И.С.Б.М.Бендер-бей
))
← →
SDF (2003-11-21 05:53) [37]Ошибка заключалась в следующем...
В последнем приведенном коде, производится перебор всех зарегенных классов аутентификации. А таковых, без подключения юнитов, не имеется. Я подкинул модуль с Ntml криптованием. Там при инициализации модуля стоит регистрация класса.
Бац, и получилось....
Теперь осталось правильно сляпать запрос и тскать следующий баг :)
← →
klyonov (2003-11-21 19:48) [38]а у тебя получилось пролезть за проксю с этим NTLM?
← →
klyonov (2003-11-21 19:51) [39]и вообще у кого-нибудь получилось залезть за проксю с не-Basic-авторизацией через Indy?
← →
SDF (2003-11-24 08:19) [40]Продолжим...
В итоге накопалось, что нету пары dll. Скачено, поставлено - не работает. Кто подскажет дальше...
Klyonov -не могу ответить на твое мыло...
← →
SDF (2003-12-02 15:14) [41]На меня тут куча траблов свалилось, посему пришлось завязать с этим делом...
Седня возобновил копание ....
Тут, короче или я тупой, или одно из двух.
Итак...
После мыканиям по методам класса TIdHttp залетаем сюда
function TIdCustomHTTP.DoOnProxyAuthorization(ARequest: TIdHTTPRequest; AResponse: TIdHTTPResponse): Boolean;
вот "проблемный код"
4* if Assigned(FOnSelectProxyAuthorization) then
begin
OnSelectProxyAuthorization(self, Auth, AResponse.ProxyAuthenticate);
end;
ProxyParams.Authentication := Auth.Create;
end;
1* result := Assigned(OnProxyAuthorization);
// Clear password and reset autorization if previous failed
2* if (AResponse.FResponseCode = 407) then begin
ProxyParams.ProxyPassword := "";
ProxyParams.Authentication.Reset;
end;
if Result then
begin
with ProxyParams.Authentication do
begin
Username := ProxyParams.ProxyUsername;
Password := ProxyParams.ProxyPassword;
AuthParams := AResponse.ProxyAuthenticate;
end;
result := false;
repeat
3* case ProxyParams.Authentication.Next of
wnAskTheProgram: // Ask the user porgram to supply us with authorization information
begin
if Assigned(OnProxyAuthorization) then
begin
ProxyParams.Authentication.Username := ProxyParams.ProxyUsername;
ProxyParams.Authentication.Password := ProxyParams.ProxyPassword;
OnProxyAuthorization(self, ProxyParams.Authentication, result);
if result then begin
ProxyParams.ProxyUsername := ProxyParams.Authentication.Username;
ProxyParams.ProxyPassword := ProxyParams.Authentication.Password;
end
else begin
break;
end;
end;
end;
wnDoRequest:
begin
result := true;
break;
end;
wnFail:
begin
result := False;
Break;
end;
end;
until false;
end;
(1*) Выделенный фрагмент , имхо, олицетворяет (не)успешное выполнения всей авторизации на проксе.
Гуд, ежели так, ставим обработку события.
(2*)Далее следует код, который лично меня, приводит в заблуждение.
Зачем, спрашивается, скидывать настройки прокси? Ну да ладно, судить разработчиков - дело неблагодарное...
Идем далее....
(3*)Насколько я понимаю выделенную строку выбирается то, что мы будем делать далее.
Из 3-х возможных вариантов, в данном случае нас устраивает только первый, ведь авторизацию мы так и не получили...
Пойдем внуть Функции Next.
Я не буду приводить код той функции, скажу только, что нужный нам резалт мы получим, при условии, что занулен параметр авторизации Login.
Тепрь поднимемся выше по коду (4*).
Оказывается, это событие тоже нужно обрабатывать, причем "//" нам не обойтись, нужно занулить Логин и установить result=True;
И все равно, не авторизируется и баста...
Копаем дальше.
← →
SDF (2003-12-03 09:58) [42]Может кто-нить поможет, а?
← →
SDF (2003-12-04 06:59) [43]Ладно... Придется писать свое... Заодно и разберусь получшее.
Страницы: 1 2 вся ветка
Форум: "Сети";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.033 c