Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Сети > IdHTTP и Proxy не работает... |
Автор: firs70 12.2.2007, 13:00 | ||
Не получается запустить программку через прокси сервер (без прокси работает без проблем)... Использую функцию IdHTTP ввожу там параметры прокси, всё без толку... Подскажите, пожалуйста, может что не так делаю? Использую эти функции: Вот скрин программки: Это код программы:
Ссылка на архив где лежит программка, исходник и видео с экрана как я что делаю и какая ошибка выскакивает... http://rapidshare.com/files/16133407/IdHTTP.rar Помогите пожалуйста!!! |
Автор: MetalFan 12.2.2007, 14:02 |
1) Обновить индей до последней версии 2) для работы через прокси юзать TidHTTP.ProxyParams. не вижу их у вас в коде. качать и смотреть имходник влом) |
Автор: firs70 12.2.2007, 14:14 |
1) как и где обновить Indy? (нашёл вроде по ссылке http://downloads.atozed.com/indy/indy10.1.5_d7.exe последний, при установке указывает путь как отдельное приложение, а не в директорию делфи... Это нормально?) 2) приведите пример кода (если не сложно конечно) что куда ставить, пожалуйста!!! |
Автор: MetalFan 12.2.2007, 15:12 | ||
1) я пользуюсь последней из 9х индей версией http://indyproject.org/Sockets/Download/Files/Indy9.aspx 2)
|
Автор: firs70 12.2.2007, 17:45 | ||
1) А как обновить? просто скопировать что ли с заменой файлов? 2) как это может с моей прогой фурычить? я так понимаю надо этот кусочек вставить вот так:
Ещё бы авторизацию по логину и паролю сделать (сам код какой? idHTTP1.ProxyParams.ProxyUser и idHTTP1.ProxyParams.ProxyPassword так получается?) |
Автор: Snowy 12.2.2007, 17:59 | ||||
|
Автор: aktuba 12.2.2007, 19:50 |
Snowy, а почему Connect/Disconnect не нужно? У меня в практике есть случаи, когда программа с ними работала, а без них нет... Или это зависит от версии Delphi? На что влияет? |
Автор: firs70 13.2.2007, 09:42 |
Ура, всё заработало!!! огромное спасибо!!! ![]() ![]() а как сделать что бы имя пользователя и пароль работали для прокси? |
Автор: Budy 13.2.2007, 09:59 |
firs70, удаляешь старые и обновляешь. 1) в Delphi меню "Component/Install Packeges". В списке выбираешь "Internet Direct (Indy) чегото там" (список по алфавиту, в конце списка почти), жмешь "Remove" - удалилось 2) запускаешь файл *.dpk для своей версии Delphi (об этом свидетельствует цифра, у меня это dclIndy70.dpk), запустиЦа Delphi, жмешь "Install", потом "OK" Добавлено @ 10:02 А если юзер в домене, как указывать логин и пароль в TidHTTP.ProxyParams? |
Автор: firs70 13.2.2007, 10:18 |
Budy, спасибо получилось обновить ![]() Да вот а с именем пользователя и паролем что делать? ![]() |
Автор: Budy 13.2.2007, 10:25 |
firs70, у тебя юзер тоже в каком-то домене? |
Автор: firs70 13.2.2007, 10:38 | ||
У меня идёт аутентификация на прокси не только через IP и порт, но и через логин и пароль... Думаю что и для домена такая же будет авторизация... Я разобрался! ![]()
|
Автор: Budy 13.2.2007, 10:54 | ||
Странно, я также делаю, однако не работает
|
Автор: firs70 13.2.2007, 11:04 |
Budy, может попробовать имя пользователя по другому указать? (username@domen) теперь интересует как пробиться на сайт такого плана: https://ssl. имя сайта/index.cgi |
Автор: firs70 13.2.2007, 12:01 |
Snowy, Спасибо сейчас поглазею ![]() |
Автор: firs70 13.2.2007, 12:41 |
оооохххх, как же там туго всё воспринимается... там есть код а куда его вставлять я так и не понял... были бы исходники и прога работающая было бы вообще великолепно... Да и еёш вопрос прокси прописывать так же как и для моей проги? Вот так? idHTTP1.ProxyParams.ProxyServer := ''; idHTTP1.ProxyParams.ProxyPort := ; |
Автор: firs70 13.2.2007, 13:02 |
Ребят, я наверное слишком наглый, НО не могли бы вы сделать подробное описание (а ещё лучше исходник) как сделать следующие вещи: 1. необходимо перейти по ссылке: https://ssl.rapidshare.com/cgi-bin/collectorszone.cgi имея ввиду что выход в интерент будет через прокси сервер (я подозреваю что там будет такая же авторизация как и на предыдущей программке). 2. произвести аутентификацию: логин - delphi-test, пароль - 321789. 3. зайти на сайт и взять число поинтов (отмечены на рисунке красным прямоугольником). ![]() и показать как в моей программке. |
Автор: Snowy 13.2.2007, 15:31 | ||
Такс. Добил. Заодно оттестил свой модуль ![]() Код такой:
В аттаче мой модуль и тестовый проект. |
Автор: firs70 13.2.2007, 16:02 |
Спасибо, всё работает! Только вот почему настройки прокси я не увидел? что за такой хтирый ход? отку да то берётся что ли настроечки? раскройте карты ![]() |
Автор: Snowy 13.2.2007, 16:26 |
Настроечки берутся из IE ![]() |
Автор: firs70 13.2.2007, 16:48 |
То есть если IE не настроено, работать не будет? У меня просто дома я работаю только через оперу и ещё у меня там логин и пароль спрашивает... выходит не будет работать так? |
Автор: Snowy 13.2.2007, 17:09 |
Если IE не настроен, то нет. Настройку прокси я ещё не сделал. Хотя... Где-то наброски у меня валялись. Но пока проверить не на чем. Дома прокси имеется - там проверю. Заодно и с логином и паролем разберусь. |
Автор: firs70 14.2.2007, 11:11 | ||
а с логином и паролем не заработала у меня дома ![]() вот так не катит, ни в первой ни во второй программке
|
Автор: Snowy 14.2.2007, 18:30 | ||
Добил компонент, но работу с прокси пока не тестировал. Попробуй. Могет получится. Теперь это компонент и его можно бросить на форму. Доку пока не делал - только-только его дописал. Брось его на форму. Заполни параметры Proxy и Request. Запуск запроса - DoRequest или Get или Post - как удобнее. По сути это одно и то же, только адрес и post в коде, а не в инспекторе прописываются. Создай обработчик OnWorkEnd В нём получишь результат: Sender.Error = 0 - значит всё нормально, иначе не получилось. Sender.Response - здесь результат - разберёшься ![]() Вот простой пример:
|
Автор: Lence 19.2.2007, 14:50 | ||
Snowy, каким образом через ваш компонент отправить данные методом ПОСТ ? нужно передать переменой H параметр - все что находится в memo1 делаю так
данные не принимаются. |
Автор: Snowy 19.2.2007, 15:04 |
Нужно указывать полный адрес: SwinHttp1.Post('http://www.site.com/script.pl', a); Кроме того, компонент сам не кодирует post данные (url-кодирование) - это необходимо делать вручную. |
Автор: Lence 19.2.2007, 15:12 | ||
Спасибо за ответ! сейчас сделаю полный путь, а каким образом делать url-кодирование ? Методом Get чтото тоже данные не принимаются, скрипты выдает сообщение что параметры не приняты ((( |
Автор: Snowy 19.2.2007, 15:23 | ||
Ну, примерно так:
|
Автор: Lence 19.2.2007, 15:30 | ||
Чтото не получается ... ![]() ![]()
|
Автор: aktuba 19.2.2007, 16:07 |
Lence, сравни что отправляет браузер и что отправляет программа. Скорее всего будут различия... |
Автор: Snowy 19.2.2007, 16:07 |
Угу. Ошибочка была. Забыл эктраинформацию передать. Приклеиваю поправленную версию. |
Автор: Lence 20.2.2007, 14:54 |
Snowy, Ваш компонент реально может заменить idHTTP ??? Очень хорошо бы доку по компоненту ... с примерчиками ![]() Спасибо! |
Автор: Snowy 20.2.2007, 15:26 |
Дока будет позже. Компонентик ещё не оттестин. Работа с прокси вообще не проверялась. Сначала нужно доработать, а потом и доку нарисую. Не раньше выходных... Добавлено @ 15:41 Вообще изначально он создавался для работы с https без дополнительных библиотек. Но и с http соответственно умеет работать без проблем. Реализует он только функционал транспорта. то есть по урлу передать запрос и получить содержимое. Никаких перекодировок и разбора полученного ответа не делает. Хотя для этого по идее можно прикрутить разборщики от Indy. Также он не умеет автоматически делать редиректы, т.к. не анализирует содержимого. Также нет менеджера печенья - он только может получить и отправить печенье, но автоматом он этого не делает. То есть реализует только транспортную работу. Никакого интеллекта в него не заложено. Вся логика пишется ручками. При желании можно будет будет написать и автологику, обёртки, интерсепторы и т.д. А в данном виде это чистый транспорт. Зато лёгкий. По функционалу способен работать как IdHTTP, так и асинхронно (асинхронный режим включен по умолчанию, но отключается простым снятием флага InThread). Асинхронность поточная. Позже также будет реализована версия для KOL (ибо компонентик лёгкий - отлично подходит для маленьких программ). Данный компонент является первым (как наиболее востребованный) в библиотеке. Пилотное название библиотеки - SWIn. В дальнейшем появится TSwinFTP. А позже - по обстоятельствам. Скорее всего будет ещё TSwinHttpServer. Все компоненты будут также в версии для KOL. Сами компоненты и документация будут выложены на страничке проекта. (страничка пока не существует, т.к. это пока пилотный экземпляр). |
Автор: Lence 20.2.2007, 18:17 |
Мне Ваш компонент понравился.. для приема и отправки очень даже подходит. Понравилось что есть поточность - прога не виснет при запросах ... Буду ждать новое дополнение !!!! Напишите здесь как будут новости !!! Спасибо большое !!! ![]() |
Автор: firs70 27.2.2007, 14:33 |
я сделал правда не на индиа на synapse. тему можно закрывать |
Автор: dVital 25.7.2007, 02:08 | ||
У меня есть маленькая проблема, при выполнении этого кода может возникать ошибка и мне нужно ее правильно обрабатывать. Только обработчик try - except почему-то не обрабатывает, а вываливается дельфевское окошко с ошибкой.
Подскажите, может кто знает в чем моя проблема.. |
Автор: aktuba 25.7.2007, 09:27 |
dVital, 1. Задавай вопросы в отдельном топе!!! 2. Проблема давно известная и по поиску ты бы давно нашел решение. Попробуй запусти программу не из Делфи, а отдельно или отключи вывод ексепшенов Инди... |
Автор: Демо 25.7.2007, 09:28 |
+ для прокси надо указать метод авторизации. |