【发布时间】:2020-11-26 00:12:22
【问题描述】:
我正在尝试将 webhook 发送到以下网址:
我的代码:
HINTERNET hIntSession = InternetOpenA((""), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (!hIntSession)
{
return request_data;
}
HINTERNET hHttpSession = InternetConnectA(hIntSession, ("discord.com"), 80, 0, 0, INTERNET_SERVICE_HTTP, 0, NULL);
if (!hHttpSession)
{
return request_data;
}
HINTERNET hHttpRequest = HttpOpenRequestA(hHttpSession, ("POST"), url.c_str()
, 0, 0, 0, INTERNET_FLAG_RELOAD, 0);
if (!hHttpSession)
{
return request_data;
}
char* szHeaders = ("Content-Type: application/json\r\nUser-Agent: License");
char* szRequest = ("{ \"content\": \"test\" }");
if (!HttpSendRequest(hHttpRequest, NULL, 0, szRequest, strlen(szRequest)))
{
return request_data;
}
CHAR szBuffer[1024] = { 0 };
DWORD dwRead = 0;
while (InternetReadFile(hHttpRequest, szBuffer, sizeof(szBuffer) - 1, &dwRead) && dwRead)
{
request_data.append(szBuffer, dwRead);
}
InternetCloseHandle(hHttpRequest);
InternetCloseHandle(hHttpSession);
InternetCloseHandle(hIntSession);
我还不能发布该请求,网址返回数据。
我正在尝试让它向我的不和谐频道发送一条消息。它不工作,我不知道为什么。
【问题讨论】:
-
附带说明,如果发生错误,此代码会泄漏资源。您必须在每个
returns 之前关闭所有打开的句柄,而不仅仅是在最后。另外,您没有将szHeaders传递给HttpSendRequest()。 -
我对我的答案进行了很多修改,但现在它处于可接受的状态。希望您没有使用我早期的编辑之一。如果是这样,只需抓住现在存在的那个。祝你好运。