клиент на ATL WebServices и прокси-сервер
От: intr21  
Дата: 28.11.05 07:53
Оценка:
Привет 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
для него не удастся. А когда запрос отправлен, опции прокси
устанавливать уже нет смысла.

Может, кто знает, как заставить работать такой клиент через
авторизующую проксю?

Заранее большое спасибо.
Юрий.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.