2

我试图在webservice的帮助下验证用户在服务器端输入的序列号,当用户输入序列号并单击下一步按钮时,应该验证序列号..我使用下面的代码....我验证序列号的方法的名称是 ValidateKey()....并且我为该方法传递了一个静态值 123456,服务将为此值返回 false,,,但我的安装正在进一步进行我在安装的最后一步收到警报消息框

function ValidateSerialNumber: Boolean;
var
  WinHttpReq: Variant;
begin
  WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
  WinHttpReq.Open('POST', 'http://localhost:1024/WebService1/Service.asmx?op=ValidateMe', False);
  WinHttpReq.Send('123456');

  if WinHttpReq.Status <> 200 then
  begin
    Result := False;
  end
  else
  begin
    Result := True;
  end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result := True;

  if CurPageID = SerialPage.ID then
  begin
    Result := ValidateSerialNumber;
  end;
end;

在这里,如果服务返回false,我想在用户单击下一步按钮时停止安装,如果服务返回true,那么他可以进一步安装,我哪里出错了?

4

1 回答 1

1

您需要通过NextButtonClick事件方法验证该序列号。如果验证失败,要留在您的自定义页面上,请FalseResult变量赋值。如果要让向导继续,请分配True给该Result事件方法的 。像这样的东西:

function ValidateSerialNumber(const SerialNumber: string): Boolean;
var
  WinHttpReq: Variant;
begin
  Result := False;

  WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
  WinHttpReq.Open('POST', 'http://localhost:1024/WebService1/Service.asmx?op=ValidateMe', False);
  WinHttpReq.Send(SerialNumber);

  Result := WinHttpReq.Status = 200;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
  SerialNumber: string;
begin
  Result := True;

  if CurPageID = SerialPage.ID then
  begin
    SerialNumber := GetSerialNumber('-');
    Result := ValidateSerialNumber(SerialNumber);
  end;
end;
于 2013-08-25T18:57:51.633 回答