在我的代码中,我希望发送http请求并在fiddler中显示它 - WinHttpReq.SetProxy(2, '127.0.0.1:8888');
如果小提琴已经启动,
如果fiddler失败了,请把它变成小提琴手,我用这种方式尝试try..except
:
[Setup] AppName=Test AppVersion=1.5 DefaultDirName={pf}\test
[Code]
var
WinHttpReq: Variant;
function ShowInFiddler(Param: String): String;
begin
try
WinHttpReq.SetProxy(2, '127.0.0.1:8888');
except MsgBox('Hello.', mbInformation, MB_OK);
end;
end;
function InitializeSetup(): Boolean;
begin
WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
WinHttpReq.Open('GET', 'http://publishers-xxxx.databssint.com/', false);
ShowInFiddler ('');
WinHttpReq.Send(); end;
但例外不起作用,有人可以帮忙吗?
答案 0 :(得分:2)
这不是Inno Setup中的错误,因为SetProxy函数不会检查代理是否可用。如果用错误的参数调用它,该函数将引发异常。 因此,如果您的代理已关闭,您应该捕获Send函数的例外,例如使用continue的默认代理设置。
例如:
var
WinHttpReq: Variant;
function InitializeSetup(): Boolean;
begin
WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
WinHttpReq.Open('GET', 'http://publishers-xxxx.databssint.com/', false);
WinHttpReq.SetProxy(2, '127.0.0.1:8888');
try
// first try connecting via given proxy
WinHttpReq.Send();
except
// proxy failed, use default settings
WinHttpReq.SetProxy(0);
try
WinHttpReq.Send();
Result := true;
except
// conncetion failed, handle error here
ShowExceptionMessage();
end;
end;
end;
请注意,默认情况下,调试程序将暂停(代理已关闭)。这不会在运行时发生。 希望它有所帮助。