Geo*_*rge 13 inno-setup http http-post
我想通过POST将Inno安装过程中从用户收集的一些信息提交给我们的服务器.
显而易见的解决方案是包含一个.exe文件,该文件将安装程序提取到临时位置并使用参数启动.但是,我想知道 - 有更简单/更好的方法吗?
Mar*_*rov 20
根据使用WinHttp库的jsobo建议,我提供了这个非常简单的代码来完成这个技巧.比如,您希望在实际安装开始之前发送序列号以进行验证.在代码部分,放:
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;
Run Code Online (Sandbox Code Playgroud)
该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;
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/aa384106.aspx列出了WinHttpRequest对象的所有方法和属性.
此外,为了避免运行时错误(如果主机无法访问可能会发生),最好用try/except代码包围代码.
| 归档时间: |
|
| 查看次数: |
8393 次 |
| 最近记录: |