我要做的就是从 NSIS 安装程序的自定义页面中将带有 Querystring 或 HTTP POST 的 HTTP GET 发送到 Web 服务。
问题是大多数插件都可以上传/下载文件,但不能简单地调用服务并返回响应。推荐使用的插件是 NsisUrlLib。我试过这个,虽然它适用于简单的 GET 请求,但如果 URL 中有查询字符串参数,它会失败并引发错误,例如:
NsisUrlLib::UrlOpen /NOUNLOAD "http://tc.hwidev.com?var=value"
Pop $connectResult
NSISdl、INetC 和其他插件与查询字符串一起使用,但只能用于上传/下载文件。
我尝试使用 ExecDos 插件从命令行调用 cURL.exe,如下所示:
ExecDos::exec /TOSTACK "curl" "http://tc.hwidev.com"
Pop $connectResult
但我不知道如何获取从传递回 NSIS 的 URL 返回的数据。上面的代码只是将一个整数返回到 $connectResult 中,它可能代表 CURL 的返回代码。如何获取从 URL 返回的实际 HTML 到 NSIS 堆栈或变量中?
或者,任何人都可以推荐一种更好的方法来实现这一点吗?调用 Web 服务似乎很简单,以至于成千上万的人应该已经明白了这一点。