Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/37: Рейтинг темы: голосов - 37, средняя оценка - 4.78
14 / 14 / 1
Регистрация: 18.09.2009
Сообщений: 45
1

Прокси-сервер (IdHTTPServer + IdHTTP)

20.10.2009, 21:55. Просмотров 7253. Ответов 11
Метки нет (Все метки)


нужно реализовать простой прокси-сервер (просто чтобы запросы браузера проходили через него):

на форме IdHTTPServer1 (Active = true)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::IdHTTPServer1CommandGet(TIdPeerThread *AThread,
      TIdHTTPRequestInfo *RequestInfo, TIdHTTPResponseInfo *ResponseInfo)
{
      URLstr = "http://"+RequestInfo->Host+RequestInfo->Document;
      if (RequestInfo->UnparsedParams != "") URLstr = URLstr+"?"+RequestInfo->UnparsedParams;
 
      TIdHTTP *myhttp = NULL;
       
      try{
           myhttp = new TIdHTTP(0);
           ResponseInfo->ContentText = myhttp->Get(URLstr);
      }
      catch (Exception &Er){
                        ShowMessage("Error: " + Er.Message);
      }
 
      delete myhttp;
}
впринципе работает, но иногда при нескольких параллельных запросах выдает ошибку.
насколько я понимаю нужно в myhttp передавать заголовок запроса.
пытался перед Get присвоить:
C++
1
myhttp->Request->ExtraHeaders->Text = RequestInfo->Headers->Text;
но в результате в браузере получаю вместо запрашиваемой страницы одни закорючки.

Подскажите что не так делаю?! Уже мозги кипят

суть: Пытаюсь реализовать обычный прокси-сервер, просто через который будут идти запросы браузера и все! - хотя бы на этом разобраться. HELP !!!!!!!!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2009, 21:55
Ответы с готовыми решениями:

IdHTTP CGI WebServer загрузка файла с ПК пользователя на сервер
Прошу проконсультировать. Есть CGI Web Server по адресу https://193.158.98.65 (не точный) ...

Прокси сервер не отвечает
Всем привет! никак не могу разобраться, почему моя программа не хочет работать... вот исходный...

Прокси сервер для TCppWebBrowser
Добрый день! Вопрос такой. Возможно ли как нибудь загружать страницы в TCppWebBrowser используя...

Прозрачный прокси сервер
помогите написать прозрачный прокси сервер http https для windows

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
11
40 / 40 / 8
Регистрация: 29.01.2009
Сообщений: 244
21.10.2009, 20:17 2
приветствую)
а можно на весь проект посмотреть?
0
14 / 14 / 1
Регистрация: 18.09.2009
Сообщений: 45
21.10.2009, 20:36  [ТС] 3
да это впринципе и есть весь проект - единственный обработчик (для теста).
ну и еще браузер настроен на этот прокси.
0
40 / 40 / 8
Регистрация: 29.01.2009
Сообщений: 244
21.10.2009, 20:45 4
какой у вас компилятор?
в 2009:
C++
1
2
IdHTTPServer1CommandGet(TIdContext *AContext, TIdHTTPRequestInfo *ARequestInfo,
          TIdHTTPResponseInfo *AResponseInfo)
TIdContext *AContext!!!
вот я и гадаю, что мне делать))
0
14 / 14 / 1
Регистрация: 18.09.2009
Сообщений: 45
21.10.2009, 20:53  [ТС] 5
C++ Builder 6, думаю в 2009 аналогично, попробуйте, заодно и скажите вдруг косяк не в коде а в моем Indy.
0
40 / 40 / 8
Регистрация: 29.01.2009
Сообщений: 244
21.10.2009, 20:54 6
я уже попробовал...
вылетает с ошибкой
0
14 / 14 / 1
Регистрация: 18.09.2009
Сообщений: 45
21.10.2009, 21:02  [ТС] 7
а компилится? и что за ошибка?

и кстати, если вместо IdHTTP использовать TNMHTTP то все работает, только задержка больше и почему то трафика тоже больше уходит. Вот незадача.=((( Так не то и так не то. Блинн, а очень нужно!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::IdHTTPServer1CommandGet(TIdPeerThread *AThread,
      TIdHTTPRequestInfo *RequestInfo, TIdHTTPResponseInfo *ResponseInfo)
{
   TNMHTTP *myhttp = NULL;
        try{
            myhttp = new TNMHTTP(0);
            myhttp->Header = RequestInfo->Headers->Text;
 
            myhttp->Get("http://"+RequestInfo->Host+RequestInfo->Document);
            ResponseInfo->ContentText = myhttp->Body;
         
        }
 
      catch (Exception &Er){
                        ShowMessage("Error: " + Er.Message);
      }
      if(myhttp)delete myhttp;
}
0
40 / 40 / 8
Регистрация: 29.01.2009
Сообщений: 244
21.10.2009, 21:13 8
ну TNMHTTP влом щас искать и устанавливать...
если через TIdHTTP, что то придумаю, напишу
и ты не забудь
0
14 / 14 / 1
Регистрация: 18.09.2009
Сообщений: 45
21.10.2009, 21:15  [ТС] 9
ок спасибо. если что отпишусь конечно!
0
40 / 40 / 8
Регистрация: 29.01.2009
Сообщений: 244
21.10.2009, 21:19 10
кстати, скопируй IdHTTPServer1(который настраивал) и вставь в текстовик, после отправь, может я, что не так настроил
0
14 / 14 / 1
Регистрация: 18.09.2009
Сообщений: 45
21.10.2009, 21:23  [ТС] 11
Код
object IdHTTPServer1: TIdHTTPServer
  Active = True
  Bindings = <>
  DefaultPort = 4322
  OnCommandGet = IdHTTPServer1CommandGet
  Left = 8
  Top = 40
end
0
14 / 14 / 1
Регистрация: 18.09.2009
Сообщений: 45
08.11.2009, 13:36  [ТС] 12
Цитата Сообщение от QenT Посмотреть сообщение
если через TIdHTTP, что то придумаю, напишу
и ты не забудь
Привет! Проблема была в Инди.
Накатил на шестерку Indy 10.2.3 и заработало. Только чуть код подогнать надо (если интересует - скажи).
А вообще для моей цели подошел компонент TIdMappedPortTCP. Жаль что мне раньше его не посоветовали..столько времени бы сэкономил.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2009, 13:36

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Socks5 прокси сервер
Скажите пожалуйста, есть ли у кого-нибудь реально рабочие исходники Socks5 прокси сервера. Очень...

IdHTTP и прокси сервер
В двух словах , При запуске программы , идёт проверка файла в интернете (файл лицензии), если...

Обмен файлами через idhttp и idhttpserver
Есть клиент-серверное приложение. Работает на idhttp и idhttpserver. Хочу добавить обмен файлами...

IdHTTP и IdHTTP сервер: как отправить сообщение от сервера к клиенту?
Всем привет, отправляю файл по частям с клиента на сервер, и хочу получать обратное сообщение, что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.