Sulla base del consiglio di jsobo sull'utilizzo della libreria WinHttp, sono arrivato con questo codice molto che fa il trucco. Ad esempio, si desidera inviare il numero di serie per la verifica appena prima dell'inizio dell'installazione effettiva. Nella sezione di codice, inserire:
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;
Il metodo Open
prende come argomenti il metodo HTTP, l'URL e se fare richiesta async e sembra che abbiamo bisogno di aggiungere SetRequestHeader
al fine di impostare l'intestazione Content-Type
a application/x-www-form-urlencoded
.
WinHttpReq.Status
terrà il codice di risposta, in modo da verificare se il server ha restituito con successo:
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 elenca tutti i metodi e le proprietà dell'oggetto WinHttpRequest
.
Inoltre, per evitare errori di runtime (può accadere se l'host non è raggiungibile) è consigliabile circondare il codice con il codice try/except
.
fonte
2011-07-17 08:57:23
Nel nostro approccio di progetto con .exe personalizzato funziona bene. – Sasha