Привет All,
Возникла проблема при попытке использовать клиентское приложение
(в основе которого ATL WebServices), работая через прокси.
Клиент следующего рода:
В 2003 VC создаю MFC-проект, добавляю Web Reference,
на основе WSDL файла визард создаёт заголовочный файл,
где содержится описание и реализация класса для данного конкретного
веб-сервиса. Класс унаследован от
CSoapSocketClientT.
Всё прекрасно работает, пока соединение прямое.
Теперь пытаюсь добавить поддержку HTTP прокси с авторизацией.
Метод
CSoapSocketClientT::SetProxy
позволяет установить адрес и порт прокси-сервера.
Относительно авторизации в MSDN ни слова найти не удалось.
Меняю родительский класс
CSoapSocketClientT на
CSoapWininetClient.
У него так же есть метод SetProxy, однако помимо этого ещё и public члены:
HINTERNET m_hConnection;
HINTERNET m_hInternet;
При прямом соединении так же всё работает отлично.
Методы на сервере вызываются, результат приходит назад.
Относительно авторизующей прокси сначала была надежда вызвать
InternetSetOption( m_hConnect, INTERNET_OPTION_PROXY_USERNAME, ... );
InternetSetOption( m_hConnect, INTERNET_OPTION_PROXY_PASSWORD, ... );
Но потом поглядел, как это работает в отладке, и понял, что как
m_hInternet, так и m_hConnection, содержат NULL, пока не вызван метод
SendRequest (то есть, запрос фактически уже отправлен),
то есть до отправления запроса вызвать
InternetSetOption
для него не удастся. А когда запрос отправлен, опции прокси
устанавливать уже нет смысла.
Может, кто знает, как заставить работать такой клиент через
авторизующую проксю?
Заранее большое спасибо.
Юрий.