Основываясь на рекомендациях jsobo по использованию библиотеки WinHttp, я пришел с этим очень простым кодом, который добился цели. Скажем, вы хотите отправить серийный номер для проверки непосредственно перед началом фактической установки. В разделе кода введите:
procedure CurStepChanged(CurStep: TSetupStep);
var
WinHttpReq: Variant;
begin
if CurStep = ssInstall then
begin
if AutoCheckRadioButton.Checked = True then
begin
WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
WinHttpReq.Open('POST', '<your_web_server>', false);
WinHttpReq.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
WinHttpReq.Send('<your_data>');
// WinHttpReq.ResponseText will hold the server response
end;
end;
end;
Метод Open
принимает в качестве аргументов метод HTTP, URL и необходимость выполнения асинхронного запроса, и кажется, что нам нужно добавить SetRequestHeader
, чтобы установить для заголовка Content-Type
значение application/x-www-form-urlencoded
.
WinHttpReq.Status
будет содержать код ответа, поэтому для проверки успешного возврата сервера:
if WinHttpReq.Status <> 200 then
begin
MsgBox('ERROR', mbError, MB_OK);
end
else
begin
MsgBox('SUCCESS', mbInformation, MB_OK);
end;
http://msdn.microsoft.com/en-us/library/aa384106.aspx перечисляет все методы и свойства объекта WinHttpRequest
.
Кроме того, во избежание ошибок во время выполнения (может произойти, если хост недоступен), рекомендуется заключить код в код try/except
.