为什么发送HTTP请求不起作用?

时间:2014-08-12 14:17:51

标签: inno-setup

我已实施以下代码向服务器发送HTTP请求但由于某种原因它无法正常工作(小提琴上没有条目)有人可以提供帮助吗? [编辑]我已将错误处理添加到代码

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
...

[Files]
Source: "MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion

; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{commondesktop}\My Program"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent


[code]

procedure CurStepChanged(CurStep: TSetupStep);
var
  WinHttpReq: Variant;
begin
  if CurStep = ssDone then
      begin

      WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
      WinHttpReq.Open('GET', 'http://publishers-x.databssint.com/', false);
      WinHttpReq.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      WinHttpReq.Send('cool');
      // WinHttpReq.ResponseText will hold the server response
          if WinHttpReq.Status <> 200 then
begin
  MsgBox(WinHttpReq.Status, mbError, MB_OK);
end
else
begin
  MsgBox('SUCCESS', mbInformation, MB_OK);
end;


    end;
  end;

1 个答案:

答案 0 :(得分:3)

任何2xx状态代码都成功。在您的情况下,202表示"accepted"。它故意模糊,但请求确实通过了回复的服务器。

至于为什么它没有在Fiddler中显示,Fiddler处于应用程序级别,并且充当代理而不是数据包监视器。 WinHttpRequest documentation表示它不使用正常的系统配置代理,而是使用自己的配置或在运行时设置的值。

如果您想使用Fiddler进行测试,请使用Fiddler的详细信息调用SetProxy:

WinHttpReq.SetProxy(2, 'localhost:888');

或者,使用WireShark直接监控网络流量。