Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.15;
Скачать: CL | DM;

Вниз

MSXML через прокси   Найти похожие ветки 

 
Тих   (2003-07-13 00:06) [0]

Нужно: загрузить XML-документ, который предоставляет некий сервис. Метод load "обламывается", поскольку, очевидно что MSXML не использует настройки прокси IE. В-общем-то проблему решил, но криво - гружу документ в IWebBrowser2, получаю XML-код, скармливаю его MSXML и разбираю, но хотелось бы обойтись без IE, бех сокетов, т.е. стандартными средствами MSXML. Что. Бы. Почитать.


 
Ihor Osov'yak ©   (2003-07-13 00:24) [1]

А UrlMkSetSessionOption пытался поиграть? (это не совет - это вопрос)..

Зы - также снифером посмотри, куда оно действительно лезет..

Зы2 Если не влом - раскажешь о результатах здесь - интересно, чтобы потом на грабли не наступать..



 
Тих   (2003-07-13 00:31) [2]

Полез в любимый MSDN

Using the WinHTTP Proxy Configuration Utility

Using the WinHTTP Proxy Configuration Utility
The WinHTTP proxy configuration utility, proxycfg.exe, configures WinHTTP to access HTTP and HTTPS servers through a proxy server. Because the ServerXMLHTTP object depends on WinHTTP proxy settings, an administrator can use the proxycfg.exe utility as part of the deployment and installation process of an application that uses WinHTTP. The administrator who runs proxycfg.exe must have local administrator privileges so that proxycfg.exe can update the registry of the local computer. WinHTTP proxy settings are per-machine, not per-user.

Note WinHTTP proxy settings are separate from the proxy settings in Microsoft® Internet Explorer.


=======================
Далее тыры-пыры, далее
=======================

See Also
ServerXMLHTTP/IServerXMLHTTPRequest Members



 
Тих   (2003-07-13 00:32) [3]

Это из XML SDK


 
Тих   (2003-07-13 00:51) [4]

Ihor Osov"yak © (13.07.03 00:24)
В общем, шут его знает. Похоже, что работает. Из дома посмотреть не могу, гляну из офиса в понедельник.

MSXML2::IServerXMLHTTPRequestPtr pRequest;
pRequest.CreateInstance(OLESTR("Msxml2.ServerXMLHTTP"));
pRequest->open(_bstr_t("GET"), _bstr_t(" http://url.cgi"), VARIANT_FALSE);
pRequest->send();
MSXML2::IXMLDOMDocument2 *pDoc = NULL;
pRequest->responseXML->QueryInterface(__uuidof(MSXML2::IXMLDOMDocument2), (void**)&pDoc);
::MessageBox(0, OLE2W(pDoc->xml), _T(""), 0);


 
Ihor Osov'yak ©   (2003-07-13 01:08) [5]

2 Тих

Так ты (извини за ты, начал на ты, уже продолжу) точно снифером посмотри, работает ли оно через прокси, или нет.. По логике - должно бы через прокси работать.. Или дай какому то юному хацкеру для тестинга, если нет сниферов тод рукой.. На худой конец можешь мне демку бросить, хоть я не хацкер, и не вьюный.. Но если демка простая - запустил, нажал на кнопку и все. Протокол сниффера брошу обратно..


 
Тих   (2003-07-13 09:31) [6]

да чо тут пробовать :-) конфигурировать настройки надо.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winhttp/http/proxycfg.asp

А в общем случае выдирать прокси, который использует IE, из реестра, и далее пользоваться функциями, предлагаемыми в этой статье.


 
Ihor Osov'yak ©   (2003-07-13 13:43) [7]

А что там видирать то - (извини, если не в тему)


function InetSessionToUserSetting(aEnProxy:boolean; aStrIP,aStrPort:string):boolean;
var
p : INTERNET_PROXY_INFO;
x : integer;
dreserved : dword;
begin
result := false;
FillChar(p,sizeof(p),0);

if aEnProxy then begin
p.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
p.lpszProxy := PChar(aStrIP+":"+aStrPort);
end
else begin
p.dwAccessType := INTERNET_OPEN_TYPE_DIRECT;
p.lpszProxy := "";
end;

p.lpszProxyBypass := "";
x := sizeof(p);
dreserved := 0;
if UrlMkSetSessionOption(INTERNET_OPTION_PROXY,@p,x,dreserved)<>S_OK
then begin
Exit;
end;


result := true;

end;


function InetSessionToRegistrySetting:boolean;
var
hk : HKEY;
s : string;
BufSize : integer;
posStr : integer;
retType : DWORD;
isUsingProxy : DWORD;
begin
result := false;
s := "";
if RegOpenKeyEx(HKEY_CURRENT_USER,
"SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings",
0,
KEY_ALL_ACCESS,
hk) = ERROR_SUCCESS then
begin
BufSize := SizeOf(isUsingProxy);
isUsingProxy := 0;
retType := REG_DWORD;
RegQueryValueEx(hk,
"ProxyEnable",
nil,
@retType,
@isUsingProxy,
@bufSize);
if isUsingProxy > 0 then
begin
SetLength(s, MAX_PATH);
BufSize := length(s);
FillChar(s[1], MAX_PATH, #0);
retType := REG_NONE;
RegQueryValueEx(hk,
"ProxyServer",
nil,
@retType,
@s[1],
@bufSize);
SetLength(s, bufsize);
if bufsize > 0 then
if s[length(s)] = #0 then SetLength(s, length(s)-1);
if length(s) > 0 then
begin
posStr := Pos("http=", LowerCase(s));
if posStr > 0 then
s := Copy(s, posStr+5, length(s));
posStr := Pos(";", s);
if posStr > 0 then
s := Copy(s, 1, posStr-1);

result := InetSessionToUserSetting(true,s,"");
end;
end
else result := InetSessionToUserSetting(false,"","");
( hk)
А что там видирать то - (извини, если не в тему)


function InetSessionToUserSetting(aEnProxy:boolean; aStrIP,aStrPort:string):boolean;
var
p : INTERNET_PROXY_INFO;
x : integer;
dreserved : dword;
begin
result := false;
FillChar(p,sizeof(p),0);

if aEnProxy then begin
p.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
p.lpszProxy := PChar(aStrIP+":"+aStrPort);
end
else begin
p.dwAccessType := INTERNET_OPEN_TYPE_DIRECT;
p.lpszProxy := "";
end;

p.lpszProxyBypass := "";
x := sizeof(p);
dreserved := 0;
if UrlMkSetSessionOption(INTERNET_OPTION_PROXY,@p,x,dreserved)<>S_OK
then begin
Exit;
end;


result := true;

end;


function InetSessionToRegistrySetting:boolean;
var
hk : HKEY;
s : string;
BufSize : integer;
posStr : integer;
retType : DWORD;
isUsingProxy : DWORD;
begin
result := false;
s := "";
if RegOpenKeyEx(HKEY_CURRENT_USER,
"SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings",
0,
KEY_ALL_ACCESS,
hk) = ERROR_SUCCESS then
begin
BufSize := SizeOf(isUsingProxy);
isUsingProxy := 0;
retType := REG_DWORD;
RegQueryValueEx(hk,
"ProxyEnable",
nil,
@retType,
@isUsingProxy,
@bufSize);
if isUsingProxy > 0 then
begin
SetLength(s, MAX_PATH);
BufSize := length(s);
FillChar(s[1], MAX_PATH, #0);
retType := REG_NONE;
RegQueryValueEx(hk,
"ProxyServer",
nil,
@retType,
@s[1],
@bufSize);
SetLength(s, bufsize);
if bufsize > 0 then
if s[length(s)] = #0 then SetLength(s, length(s)-1);
if length(s) > 0 then
begin
posStr := Pos("http=", LowerCase(s));
if posStr > 0 then
s := Copy(s, posStr+5, length(s));
posStr := Pos(";", s);
if posStr > 0 then
s := Copy(s, 1, posStr-1);

result := InetSessionToUserSetting(true,s,"");
end;
end
else result := InetSessionToUserSetting(false,"","");
RegCloseKey(hk);
end;
end;


 
Тих   (2003-07-13 15:28) [8]

Слушай, я ничего не пойму :-) кажется, ввожу в заблуждение себя, тебя и всех (дома проверить нечем).
Начал эту утилиту искать - оказывается, она только в дистрибутиве Server 2003. Так что временно изыски прерываю, до середины следующей недели, пока на мышах не опробую. Возможно, все гораздо проще.



Страницы: 1 вся ветка

Текущий архив: 2003.09.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
3-48398
Relaxxx
2003-08-26 12:58
2003.09.15
Автоинкрементное поле


6-48676
MegaVolt
2003-04-25 15:53
2003.09.15
Как найти зашаренные ресурсы с $ например Temp$ ?


1-48645
Skif
2003-09-03 05:19
2003.09.15
Пробег по компонентам


1-48566
Man
2003-08-27 21:21
2003.09.15
вызов одинаковых окон МДИ приложения


3-48476
Olegka
2003-08-22 14:49
2003.09.15
Excel и Word