📜  在 AUTO IT 中获取请求 (1)

📅  最后修改于: 2023-12-03 15:37:18.215000             🧑  作者: Mango

在 AUTO IT 中获取请求

在编写 AUTO IT 脚本时,有时需要获取网页或服务器端的请求数据以便进行后续处理。本文将介绍如何在 AUTO IT 中获取请求。

WinHTTP UDF

AUTO IT 提供了 WinHTTP UDF (User-defined functions) 来支持 HTTP 请求的发送与接收。使用 WinHTTP UDF 可以方便地获取 HTTP 请求中的各种数据。

安装 WinHTTP UDF

使用 WinHTTP UDF 前需要先安装该库,可以在以下链接中下载 WinHTTP UDF:

https://www.autoitscript.com/forum/topic/148114-winhttp-functions/

解压缩下载的文件,并将其中的 WinHTTP.au3 文件复制到 AUTO IT 的包含 UDF 的目录中。

使用 WinHTTP UDF 进行 HTTP 请求

WinHTTP UDF 提供了丰富的函数来进行 HTTP 请求的发送与接收。例如,以下代码演示了如何使用 WinHTTP UDF 发送一个 GET 请求并获取响应:

#include <WinHTTP.au3>

Local $sURL = "http://example.com"
Local $oHTTP = _WinHTTP_Open()
Local $oRequest = _WinHTTP_Connect($oHTTP, $sURL)
_WinHTTP_SendRequest($oRequest)
_WinHTTP_ReceiveResponse($oRequest)
Local $iStatusCode = _WinHTTP_GetHTTPStatusCode($oRequest)
Local $sResponse = _WinHTTP_ReadData($oRequest)
_WinHTTP_CloseHandle($oHTTP)

上述代码中,首先需要打开一个 WinHTTP 句柄 _WinHTTP_Open(),然后使用 _WinHTTP_Connect() 函数连接到请求的 URL。发送请求后,使用 _WinHTTP_ReceiveResponse() 函数等待响应,然后使用 _WinHTTP_GetHTTPStatusCode() 函数获取 HTTP 状态码,最后使用 _WinHTTP_ReadData() 函数获取响应内容。

HTTP请求的其他方式

除了 WinHTTP UDF,AUTO IT 还提供了其他操作 HTTP 请求的方式。例如,可以使用以下代码使用 InetGet() 函数下载文件:

Local $sURL = "http://example.com/file.txt"
Local $sSaveAs = "file.txt"
InetGet($sURL, $sSaveAs, 1, 1)

或者使用以下代码使用 TCP* 函数发送 HTTP 请求:

Local $sURL = "GET / HTTP/1.1" & @CRLF & "Host: example.com" & @CRLF & @CRLF
Local $sServer = "example.com"
Local $iPort = 80
TcpStartup()
Local $iSocket = TCPConnect($sServer, $iPort)
TCPSend($iSocket, $sURL)
Local $sResponse = TCPRecv($iSocket, 4096)
TCPCloseSocket($iSocket)
TcpShutdown()
总结

本文介绍了如何在 AUTO IT 中获取 HTTP 请求。通过使用 WinHTTP UDF 可以方便地进行 HTTP 请求的发送与接收,其他 HTTP 请求的方式也都有详细的文档说明。在使用 AUTO IT 进行 HTTP 请求时,需要注意数据的编码与解码等问题。