我试图在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,那么他可以进一步安装,我哪里出错了?
答案 0 :(得分:1)
您需要从NextButtonClick
事件方法验证该序列号。如果验证失败,请保留在自定义页面上,将False
值分配给Result
变量。如果您想让向导继续,请将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;