首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Inno安装程序中不等待响应的异步HTTP请求

在Inno安装程序中不等待响应的异步HTTP请求
EN

Stack Overflow用户
提问于 2017-06-14 10:54:01
回答 1查看 794关注 0票数 5

我有一个Inno安装安装程序,需要在安装期间进行API调用。这会将一些数据发布到远程API中。

POST调用在代码部分使用Pascal和WinHttpRequest对象执行。API是ASP.Net WebAPI 2 (C#)。

我完全控制了进程的所有部分,即Inno设置脚本、它的代码部分和WebAPI。

问题

我可以同步进行POST调用,不会出现任何问题,但是如果我在WinHttpRequest.Open()方法上将异步标志设置为WinHttpRequest.Open(),则.Send()方法似乎根本不执行。

代码语言:javascript
复制
procedure PostData(postural: String);
   var 
     WinHttpReq: Variant;
     ReqContent: String;
   begin
     try
       WinHttpReq := CreateOleObject('WinHttp.WinHttpRequest.5.1');
       ReqContent := 'item=value';
       WinHttpReq.Open('POST', postUrl, true);
       WinHttpReq.SetRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
       WinHttpReq.Send(ReqContent);
     except
     end;
   end;

我使用VisualStudio调试器中的一个断点进行了检查,端点永远不会被调用。

在Google上搜索的时候,我只找到了异步获得响应的各种尝试,但是我找不到解决这个问题的方法。我不需要响应,这是一种火灾和遗忘的API调用.

浓缩问题

为什么API没有接收到调用,我如何解决这个问题?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-14 11:17:54

为了完成异步请求,WinHttpRequest实例必须保持“活动”。

为此,你至少要确保:

  • 变量WinHttpReq一直保存到请求完成为止。也就是说,在特定情况下,您不能在请求完成之前离开PostData。或者您需要使WinHttpReq成为一个全局变量(而不是PostData过程的本地变量)。 变量;过程CreateOleObject('WinHttp.WinHttpRequest.5.1');PostData(姿势: String);var ReqContent: String;开始尝试WinHttpReq := ReqContent := 'item=value';WinHttpReq.Open('POST',postUrl,true);WinHttpReq.SetRequestHeader(‘Content’,‘application/x form-urlencoded’);WinHttpReq.Send(ReqContent);除了end,end;
  • 进程(安装程序)本身运行,直到请求完成。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44542756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档