Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
3-16170
Tt
2004-01-14 12:08
2004.02.06
Логич.поля и dxDBGrid


14-16726
VictorT
2004-01-15 15:46
2004.02.06
Подскажите, что за книга... бумажная...


14-16665
MPS
2004-01-16 16:57
2004.02.06
Есть ли заработок в интернете?


1-16403
Новый Новичок
2004-01-22 18:39
2004.02.06
Как можно поменять картинку на рабочем столе програмно


1-16357
denis24
2004-01-24 10:21
2004.02.06
выпадающий список у combobox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский