Dựa trên lời khuyên của jsobo về việc sử dụng thư viện WinHttp, tôi đi kèm với mã này đơn giản là rất. Giả sử bạn muốn gửi số sê-ri để xác minh ngay trước khi quá trình cài đặt thực sự bắt đầu. Trong phần mã, đưa:
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;
Phương pháp Open
mất như các đối số phương thức HTTP, URL và xem có nên làm theo yêu cầu async và nó có vẻ như chúng ta cần thêm SetRequestHeader
để thiết lập các Content-Type
tiêu đề để application/x-www-form-urlencoded
.
WinHttpReq.Status
sẽ giữ mã phản hồi, vì vậy để kiểm tra xem máy chủ trở thành công:
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 liệt kê tất cả các phương pháp và các thuộc tính của đối tượng WinHttpRequest
.
Ngoài ra, để tránh lỗi thời gian chạy (có thể xảy ra nếu máy chủ không thể truy cập được), bạn nên bao quanh mã với mã try/except
.
Nguồn
2011-07-17 08:57:23
Trong cách tiếp cận dự án của chúng tôi với tùy chỉnh .exe hoạt động tốt. – Sasha